本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 .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 重力 on2,請新增
--arm64
旗標來編譯您的程式碼。ARM CPUscargo 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,請執行建立
函數命令。 -
對於
--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 -
使用部署您的 Rust 函數二進製文件 AWS SAM CLI
您也可以使用 AWS SAM CLI.
-
使用資源和屬性定義建立 AWS SAM 範本。對於
Runtime
,請指定provided.al2023
。這是僅限作業系統的執行階段。僅限作業系統的執行階段是用來將編譯的二進位檔案和自訂執行階段部署至 Lambda。如需使用部署 Lambda 函數的詳細資訊 AWS SAM,請參閱AWS開發人員指AWS Serverless Application Model 南中的:: 無伺服器:: 函數。
範例 SAMRust 二進製文件的資源和屬性定義
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
如需有關使用建置 Rust 函數的詳細資訊 AWS SAM CLI,請參閱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
如果您使用的是 AWS CLI 版本 2,則需要此cli-binary-format選項。若要讓此成為預設的設定,請執行 aws configure set cli-binary-format raw-in-base64-out
。若要取得更多資訊,請參閱《AWS Command Line Interface 使用者指南第 2 版》中 AWS CLI 支援的全域命令列選項。