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

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

构建自定义运行时

可以将sam build命令来构建 Lambda 函数所需的自定义运行时。您可以通过指定您的 Lambda 函数来声明使用自定义运行时Runtime: provided,表示该函数。

要构建自定义运行时,请声明Metadata资源属性与BuildMethod: makefile条目。您提供了一个自定义的 makefile,您可以在其中声明表单的build-function-logical-id,其中包含运行时的构建命令。如有必要,makefile 负责编译自定义运行时,并将构建工件复制到工作流中后续步骤所需的适当位置。生成文件的位置由CodeUri属性,并且必须命名为Makefile

Examples

示例 1:用 Rust 编写的函数的自定义运行时间

以下Amazon SAM模板声明了一个使用 Rust 编写的 Lambda 函数的自定义运行时的函数,并指示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 包含将执行的构建目标和命令。请注意,CodeUri属性将设定为.,因此 makefile 必须位于项目根目录中(即,与应用程序的Amazon SAM模板文件)。文件名必须为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,请参阅的 Rust 运行时Amazon Lambda博客帖子。

示例 2:Python3.7 的生成文件生成器(替代使用捆绑生成器)

您可能希望使用未包含在捆绑生成器中的库或模块。本示例将展示Amazon SAM模板,用于 Python3.7 运行时使用生成文件生成器。

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

以下 makefile 包含将执行的构建目标和命令。请注意,CodeUri属性将设定为hello_world,因此生成文件必须位于hello_world子目录,文件名必须为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