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

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

注意

Rust 執行期用戶端是實驗性套件。它可能會發生變更,僅用於評估目的。

本頁說明如何編譯 Rust 函數,然後使用 Cargo Lambda 將編譯後的二進位檔部署到 AWS Lambda。它也會示範如何使用 AWS Command Line Interface 和 AWS Serverless Application Model CLI 來部署已編譯的二進位檔。

必要條件

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

下列步驟示範如何使用 Rust 為您的第一個 Lambda 函數建立專案,並使用 Cargo Lambda 進行編譯。

  1. 安裝 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 文件中的安裝

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

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

    cargo lambda build --release

    (選用) 如果您想要在 Lambda 上使用 AWS Graviton2,請新增 --arm64 標記以便為 ARM CPU 編譯程式碼。

    cargo lambda build --release --arm64
  4. 在部署 Rust 函數之前,請先在您的機器上設定 AWS 憑證。

    aws configure

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

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

cargo lambda deploy my-function

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

您也可以使用 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

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

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

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

    cargo lambda build --release
  3. 使用 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。若要取得更多資訊,請參閱《AWS Command Line Interface 使用者指南第 2 版》AWS CLI 支援的全域命令列選項