使用 .zip 封存檔部署 Rust Lambda 函數
注意
Rust 執行期用戶端
本頁說明如何編譯 Rust 函數,然後使用 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 newmy-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 deploymy-function
使用 AWS CLI 部署 Rust 函數二進位檔
您也可以使用 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-namemy-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。這是僅限作業系統的執行時期。僅限作業系統的執行時期用於將編譯的二進位檔和自訂執行時期部署至 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-namemy-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 支援的全域命令列選項。