使用 .zip 文件存档部署 Rust Lambda 函数
注意
Rust 运行时系统客户端
本页将介绍如何编译 Rust 函数,然后使用 Cargo Lambda
Sections
先决条件
在 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 new
my-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 deploy
my-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-name
my-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-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 支持的全局命令行选项。