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

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

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

注意

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

本頁說明如何編譯 Rust 函數,然後將編譯後的二進位檔部署到 AWS Lambda 使用 Cargo 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 重力 on2,請新增--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,請執行建立函數命令。

    • 對於 --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

使用部署您的 Rust 函數二進製文件 AWS SAM CLI

您也可以使用 AWS SAM CLI.

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

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