.zip ファイルアーカイブを使用して Rust Lambda 関数をデプロイする - AWS Lambda

.zip ファイルアーカイブを使用して Rust Lambda 関数をデプロイする

注記

Rust ランタイムクライアント」は実験的なパッケージです。これは変更される可能性があり、評価のみを目的としています。

このページでは、Rust 関数をコンパイルし、Cargo Lambda を使用して コンパイルしたバイナリを AWS Lambda にデプロイする方法について説明します。また、AWS Command Line Interface と AWS Serverless Application Model CLI を使用してコンパイルしたバイナリをデプロイする方法も示します。

前提条件

MacOS、Windows、Linux で Rust 関数をビルドする

次のステップでは、Rust で最初の Lambda 関数のプロジェクトを作成し、Cargo Lambda でコンパイルする方法を示しています。

  1. Cargo サブコマンドである Cargo Lambda をインストールします。これは macOS、Windows、Linux で Lambda 用の Rust 関数をコンパイルします。

    Python 3 がインストールされているシステムに Cargo Lambda をインストールするには、次の pip を使用してください。

    pip3 install cargo-lambda

    macOS または Linux に Cargo Lambda をインストールするには、Homebrew を使用します。

    brew tap cargo-lambda/cargo-lambda brew install cargo-lambda

    Windows に Cargo Lambda をインストールし、Scoop を使用します。

    scoop bucket add cargo-lambda scoop install cargo-lambda/cargo-lambda

    その他のオプションについては、Cargo Lambda ドキュメントの「インストール」を参照してください。

  2. パッケージ構造を作成します。このコマンドは、src/main.rs に基本的な関数コードを作成します。このコードをテストに使用することも、独自のコードで置き換えることもできます。

    cargo lambda new my-function
  3. パッケージのルートディレクトリ内で build サブコマンドを実行して、関数内のコードをコンパイルします。

    cargo lambda build --release

    (オプション) Lambda でAWS Graviton2 を使用する場合は、--arm64 フラグを追加して ARM CPU 用のコードをコンパイルします。

    cargo lambda build --release --arm64
  4. Rust 関数をデプロイする前に、マシンに AWS 認証情報を設定します。

    aws configure

Cargo Lambda による Rust 関数バイナリのデプロイ

deploy サブコマンドを使用して、コンパイルされたバイナリを Lambda にデプロイします。このコマンドは実行ロールを作成し、次に Lambda 関数を作成します。既存の実行ロールを指定するには、--iam-role フラグを使用します

cargo lambda deploy my-function

AWS CLI を使用して Rust 関数バイナリをデプロイする

AWS CLI を使用してバイナリをデプロイすることもできます。

  1. .zip デプロイパッケージをビルドするには、ビルドサブコマンドを使用します。

    cargo lambda build --release --output-format zip
  2. .zip パッケージをデプロイするには、create-function コマンドを実行します。

    • --runtime の場合、provided.al2023 を指定します。これは OS のみのランタイムです。OS のみのランタイムは、コンパイルされたバイナリとカスタムランタイムを Lambda にデプロイするために使用されます。

    • --role には、実行ロールの ARN を指定します。

    aws lambda create-function \ --function-name my-function \ --runtime provided.al2023 \ --role arn:aws:iam::111122223333:role/lambda-role \ --handler rust.handler \ --zip-file fileb://target/lambda/my-function/bootstrap.zip

AWS SAM CLI による Rust 関数バイナリのデプロイ

AWS SAM CLI を使用してバイナリをデプロイすることもできます。

  1. リソースとプロパティの定義を含む AWS SAM テンプレートを作成します。Runtime の場合、provided.al2023 を指定します。これは OS のみのランタイムです。OS のみのランタイムは、コンパイルされたバイナリとカスタムランタイムを Lambda にデプロイするために使用されます。

    AWS SAM を使用して Lambda 関数をデプロイする方法の詳細については、「AWS Serverless Application Model 開発者ガイド」の「AWS::Serverless::Function」を参照してください。

    例 Rust バイナリの SAM リソースとプロパティ定義
    AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: SAM template for Rust binaries Resources: RustFunction: Type: AWS::Serverless::Function Properties: CodeUri: target/lambda/my-function/ Handler: rust.handler Runtime: provided.al2023 Outputs: RustFunction: Description: "Lambda Function ARN" Value: !GetAtt RustFunction.Arn
  2. build サブコマンドを使用して関数をコンパイルします。

    cargo lambda build --release
  3. sam deploy コマンドを使用して、関数を Lambda にデプロイします。

    sam deploy --guided

AWS SAM CLI を使用した Rust 関数をビルドする方法の詳細については、AWS Serverless Application Model 開発者ガイドの「Cargo Lambda による Rust Lambda 関数のビルド」を参照してください。

Cargo Lambda を使用して Rust 関数を呼び出す

invoke サブコマンドを使用して、ペイロードを用いて関数をテストします。

cargo lambda invoke --remote --data-ascii '{"command": "Hello world"}' my-function

AWS CLI を使用して Rust 関数を呼び出すには

また、AWS CLI を使用して関数を呼び出すこともできます。

aws lambda invoke --function-name my-function --cli-binary-format raw-in-base64-out --payload '{"command": "Hello world"}' /tmp/out.txt

AWS CLI バージョン 2 を使用している場合、cli-binary-format オプションは必須です。これをデフォルト設定にするには、aws configure set cli-binary-format raw-in-base64-out を実行します。詳細については、バージョン 2 の AWS Command Line Interface ユーザーガイドの「AWS CLI でサポートされているグローバルコマンドラインオプション」を参照してください。