使用下列方法构建 Rust LambdaCargo Lambda - Amazon Serverless Application Model
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用下列方法构建 Rust LambdaCargo Lambda

此功能位于 Amazon SAM 的预览版中,可能会发生变化。

在 RustAmazon Lambda 函数中使用Amazon SAM命令行界面 (Amazon SAMCLI)。

先决条件

Cargo Lambda子命令

CAmazon SAM LI 需要安装的Cargo Lambda子命令Cargo。

选择加入Amazon SAM CLI 测试版功能

由于此功能处于预览阶段,您必须使用以下方法之一选择使用以下方法之一选择允许使用以下方法之一选择允许使用以下方法之一选择允许使用以下方法之一

  1. 使用环境变量:SAM_CLI_BETA_RUST_CARGO_LAMBDA=1

  2. 在您的 samconfig.toml 文件中添加以下内容:

    [default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true
  3. 在使用支持的Amazon SAM CLI 命令时使用该--beta-features选项。例如:

    $ sam build --beta-features
  4. 在Amazon SAM CLI 提示您选择加入y时选择选项。

配置Amazon SAM为与 Rust Lambda 函数一起使用

步骤 1:配置允许配置允许配置允许配置允许配置Amazon SAM允许

使用以下内容配置您的Amazon SAM模板:

  • 二进制-可选。指定您的模板何时包含多个 Rust Lambda 函数。

  • BuildMethodrust-cargolambda.

  • CodeUri— 您的Cargo.toml文件路径。

  • 处理器-bootstrap.

  • 运行时间-provided.al2.

要了解有关自定义运行时的更多信息,请参阅Amazon Lambda开发者指南中的自定义Amazon Lambda运行时

以下是已配置Amazon SAM模板的示例:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Serverless::Function Metadata: BuildMethod: rust-cargolambda BuildProperties: function_a Properties: CodeUri: ./rust_app Handler: bootstrap Runtime: provided.al2 ...

第 2 步:将Amazon SAM CLI 与你的 Rust Lambda 函数结合使用

在您的Amazon SAM模板中使用任何Amazon SAM CLI 命令。有关Amazon SAM CLI 命令的更多信息,请参阅Amazon SAMCLI 命令参考

示例

单一 Lambda 函数项目 Lam

以下是包含一个 Rust Lambda 函数的无服务器应用程序的示例。

项目目录结构:

.
├── Cargo.lock
├── Cargo.toml
├── src
│   └── main.rs
└── template.yaml

Amazon SAM模板:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: MyFunction: Type: AWS::Serverless::Function Metadata: BuildMethod: rust-cargolambda Properties: CodeUri: ./ Handler: bootstrap Runtime: provided.al2 ...

多个 Lambda 函数项目

以下是包含多个 Rust Lambda 函数的无服务器应用程序的示例。

项目目录结构:

.
├── Cargo.lock
├── Cargo.toml
├── src
│   ├── function_a.rs
│   └── function_b.rs
└── template.yaml

Amazon SAM模板:

AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 ... Resources: FunctionA: Type: AWS::Serverless::Function Metadata: BuildMethod: rust-cargolambda BuildProperties: Binary: function_a Properties: CodeUri: ./ Handler: bootstrap Runtime: provided.al2 FunctionB: Type: AWS::Serverless::Function Metadata: BuildMethod: rust-cargolambda BuildProperties: Binary: function_b Properties: CodeUri: ./ Handler: bootstrap Runtime: provided.al2

Cargo.toml文件:

[package] name = "test-handler" version = "0.1.0" edition = "2021" [dependencies] lambda_runtime = "0.6.0" serde = "1.0.136" tokio = { version = "1", features = ["macros"] } tracing = { version = "0.1", features = ["log"] } tracing-subscriber = { version = "0.3", default-features = false, features = ["fmt"] } [[bin]] name = "function_a" path = "src/function_a.rs" [[bin]] name = "function_b" path = "src/function_b.rs"