使用 .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

如果使用 cli-binary-format 版本 2,则 AWS CLI 选项是必需的。要将其设为默认设置,请运行 aws configure set cli-binary-format raw-in-base64-out。有关更多信息,请参阅版本 2 的 AWS Command Line Interface 用户指南中的 AWS CLI 支持的全局命令行选项