使用 .zip 封存檔部署 Rust Lambda 函數 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用 .zip 封存檔部署 Rust Lambda 函數

此頁面說明如何編譯 Rust 函數,然後使用 AWS Lambda Cargo Lambda 將編譯的二進位檔部署到 。它還顯示如何使用 AWS Command Line Interface 和 AWS Serverless Application Model CLI 部署編譯的二進位檔。

先決條件

在 macOS、Windows 或 Linux 上建置 Rust 函數

下列步驟示範如何使用 Rust 為第一個 Lambda 函數建立專案,並使用 Cargo Lambda 編譯專案,這是 Cargo 命令列工具的第三方開放原始碼延伸模組,可簡化 Rust Lambda 函數的建置和部署。

  1. 安裝 Cargo Lambda,這是 Cargo 命令列工具的第三方開放原始碼延伸,可簡化 Rust Lambda 函數的建置和部署:

    cargo install cargo-lambda

    如需其他安裝選項,請參閱 Cargo Lambda 文件中的安裝

  2. 建立套件結構。此命令會在 src/main.rs 中建立一些基礎函數程式碼。可以使用此程式碼進行測試,也可以將其替換為您自己的程式碼。

    cargo lambda new my-function
  3. 在套件的根目錄中,執行 build 子命令來編譯函數中的程式碼。

    cargo lambda build --release

    (選用) 如果您想要在 Lambda 上使用 AWS Graviton2,請新增 --arm64旗標來編譯 ARM CPUs 的程式碼。

    cargo lambda build --release --arm64
  4. 部署 Rust 函數之前,請在機器上設定 AWS 登入資料。

    aws configure

使用 Cargo Lambda 部署 Rust 函數二進位檔

使用 deploy 子命令將編譯後的二進位檔部署至 Lambda。此命令會建立執行角色,然後建立 Lambda 函數。若要指定現有的執行角色,請使用 --iam-role 標記

cargo lambda deploy my-function

使用 部署 Rust 函數二進位檔 AWS CLI

您也可以使用 部署二進位檔 AWS CLI。

  1. 使用 build 子命令,建置 .zip 部署套件。

    cargo lambda build --release --output-format zip
  2. 若要部署 .zip 套件至 Lambda,請執行 create-function 命令。

    • 對於 --runtime,請指定 provided.al2023。這是僅限作業系統的執行時期。僅限作業系統的執行時期用於將編譯的二進位檔和自訂執行時期部署至 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

使用 CLI 部署 Rust AWS SAM 函數二進位檔

您也可以使用 AWS SAM CLI 部署二進位檔。

  1. 使用資源和屬性定義建立 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
  2. 使用 build 子命令來編譯函數。

    cargo lambda build --release
  3. 使用 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 支援的全域命令列選項