本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 .zip 封存檔部署 Rust Lambda 函數
注意
Rust 執行期用戶端
此頁面說明如何編譯 Rust 函數,然後使用 AWS Lambda Cargo Lambda
先決條件
在 macOS、Windows 或 Linux 上建置 Rust 函數
下列步驟示範如何使用 Rust 為您的第一個 Lambda 函數建立專案,並使用 Cargo Lambda
-
安裝 Cargo Lambda,這是一個 Cargo 子命令,它可以在 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 CPUs 的程式碼。cargo lambda build --release --arm64
-
部署 Rust 函數之前,請在機器上設定 AWS 登入資料。
aws configure
使用 Cargo Lambda 部署 Rust 函數二進位檔
使用 deploy
cargo lambda deploy
my-function
使用 部署 Rust 函數二進位檔 AWS CLI
您也可以使用 部署二進位檔 AWS CLI。
-
使用 build
子命令,建置 .zip 部署套件。 cargo lambda build --release --output-format zip
-
若要部署 .zip 套件至 Lambda,請執行 create-function
命令。 -
對於
--runtime
,請指定provided.al2023
。這是僅限作業系統的執行時期。僅限作業系統的執行時期用於將編譯的二進位檔和自訂執行時期部署至 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 -
使用 CLI 部署 Rust AWS SAM 函數二進位檔
您也可以使用 AWS SAM CLI 部署二進位檔。
-
建立具有資源和屬性定義的 AWS SAM 範本。對於
Runtime
,請指定provided.al2023
。這是僅限作業系統的執行時期。僅限作業系統的執行時期用於將編譯的二進位檔和自訂執行時期部署至 Lambda。如需使用 部署 Lambda 函數的詳細資訊 AWS SAM,請參閱《 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
如需使用 CLI 建置 Rust AWS SAM 函數的詳細資訊,請參閱《 AWS Serverless Application Model 開發人員指南》中的使用 Cargo Lambda 建置 Rust Lambda 函數。
使用 Cargo Lambda 叫用您的 Rust 函數
使用 invoke
cargo lambda invoke --remote --data-ascii '{"command": "Hello world"}'
my-function
使用 叫用 Rust 函數 AWS CLI
您也可以使用 AWS CLI 來叫用 函數。
aws lambda invoke --function-name
my-function
--cli-binary-format raw-in-base64-out --payload '{"command": "Hello world"}' /tmp/out.txt
如果您使用的是第 2 AWS CLI 版,則需要 cli-binary-format選項。若要讓此成為預設的設定,請執行 aws configure set cli-binary-format raw-in-base64-out
。若要取得更多資訊,請參閱《AWS Command Line Interface 使用者指南第 2 版》中 AWS CLI 支援的全域命令列選項。