注記
「Rust ランタイムクライアント
このページでは、Rust 関数をコンパイルし、Cargo Lambda
セクション
前提条件
MacOS、Windows、Linux で Rust 関数をビルドする
次のステップでは、Rust で最初の Lambda 関数のプロジェクトを作成し、Cargo Lambda
-
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 ドキュメントの「インストール
」を参照してください。 -
パッケージ構造を作成します。このコマンドは、
src/main.rs
に基本的な関数コードを作成します。このコードをテストに使用することも、独自のコードで置き換えることもできます。cargo lambda new
my-function
-
パッケージのルートディレクトリ内で build
サブコマンドを実行して、関数内のコードをコンパイルします。 cargo lambda build --release
(オプション) Lambda でAWS Graviton2 を使用する場合は、
--arm64
フラグを追加して ARM CPU 用のコードをコンパイルします。cargo lambda build --release --arm64
-
Rust 関数をデプロイする前に、マシンに AWS 認証情報を設定します。
aws configure
Cargo Lambda による Rust 関数バイナリのデプロイ
deploy
cargo lambda deploy
my-function
AWS CLI を使用して Rust 関数バイナリをデプロイする
AWS CLI を使用してバイナリをデプロイすることもできます。
-
.zip デプロイパッケージをビルドするには、ビルド
サブコマンドを使用します。 cargo lambda build --release --output-format zip
-
.zip パッケージをデプロイするには、create-function
コマンドを実行します。 -
--runtime
の場合、provided.al2023
を指定します。これは OS のみのランタイムです。OS のみのランタイムは、コンパイルされたバイナリとカスタムランタイムを Lambda にデプロイするために使用されます。 -
--role
には、実行ロールの ARN を指定します。
aws lambda create-function \ --function-name
my-function
\ --runtimeprovided.al2023
\ --rolearn: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 を使用してバイナリをデプロイすることもできます。
-
リソースとプロパティの定義を含む 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
-
build
サブコマンドを使用して関数をコンパイルします。 cargo lambda build --release
-
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 でサポートされているグローバルコマンドラインオプション」を参照してください。