构建自定义运行时 - AWS Serverless Application Model
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

构建自定义运行时

您可以使用 sam构建 命令,以构建您的 Lambda 功能。您声明了您的 Lambda 函数,通过指定 Runtime: provided 功能。

要构建自定义运行时,请声明 Metadata 资源属性,带 BuildMethod: makefile 条目。您提供自定义makefile,在此您可以声明表单的构建目标 build-function-logical-id 包含运行时的构建命令。必要时,您的makefile负责编译自定义运行时,并将构建工件复制到工作流程中后续步骤所需的适当位置。

Examples

示例 1:Rust中写入的函数的自定义运行时

以下 AWS SAM 模板声明使用自定义运行时 Lambda 在Rust中编写的功能,并指示 sam build 以执行 build-HelloRustFunction 构建目标。

Resources: HelloRustFunction: Type: AWS::Serverless::Function Properties: FunctionName: HelloRust Handler: bootstrap.is.real.handler Runtime: provided MemorySize: 512 CodeUri: . Metadata: BuildMethod: makefile

以下 makefile 包含构建目标和将执行的命令。

build-HelloRustFunction: cargo build --release --target x86_64-unknown-linux-musl cp ./target/x86_64-unknown-linux-musl/release/bootstrap $(ARTIFACTS_DIR)

有关设置开发环境以执行 cargo build 命令 makefile,请参阅 锈蚀运行时 AWS Lambda 博文。

示例 2:MakefileBuilderforPython3.7(替代使用捆绑构建工具)

您可能想要使用捆绑构建程序中未包含的库或模块。此示例显示了 AWS SAM 使用makefile生成器的Python3.7运行时模板。

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello_world/ Handler: app.lambda_handler Runtime: python3.7 Metadata: BuildMethod: makefile

以下 makefile 包含构建目标和将执行的命令。

build-HelloWorldFunction: cp *.py $(ARTIFACTS_DIR) cp requirements.txt $(ARTIFACTS_DIR) python -m pip install -r requirements.txt -t $(ARTIFACTS_DIR) rm -rf $(ARTIFACTS_DIR)/bin