本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用下列方法构建 Rust LambdaCargo Lambda
| 此功能位于 Amazon SAM 的预览版中,可能会发生变化。 |
在 RustAmazon Lambda 函数中使用Amazon SAM命令行界面 (Amazon SAMCLI)。
先决条件
Cargo Lambda子命令
CAmazon SAM LI 需要安装的Cargo Lambda子命令Cargo。
-
要了解更多信息Cargo Lambda,请参阅什么是Cargo Lambda?
-
有关Cargo Lambda安装说明,请参阅Cargo Lambda文档中的安装
。
选择加入Amazon SAM CLI 测试版功能
由于此功能处于预览阶段,您必须使用以下方法之一选择使用以下方法之一选择允许使用以下方法之一选择允许使用以下方法之一选择允许使用以下方法之一
-
使用环境变量:
SAM_CLI_BETA_RUST_CARGO_LAMBDA=1。 -
在您的
samconfig.toml文件中添加以下内容:[default.build.parameters] beta_features = true [default.sync.parameters] beta_features = true -
在使用支持的Amazon SAM CLI 命令时使用该
--beta-features选项。例如:$sam build --beta-features -
在Amazon SAM CLI 提示您选择加入
y时选择选项。
配置Amazon SAM为与 Rust Lambda 函数一起使用
步骤 1:配置允许配置允许配置允许配置允许配置Amazon SAM允许
使用以下内容配置您的Amazon SAM模板:
-
二进制-可选。指定您的模板何时包含多个 Rust Lambda 函数。
-
BuildMethod –
rust-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"