本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
构建自定义运行时
您可以使用sam 构建
命令来构建 Lambda 函数所需的自定义运行时。您可以通过指定来声明 Lambda 函数使用自定义运行时Runtime: provided
为了该函数。
要构建自定义运行时,请声明Metadata
资源属性带BuildMethod: makefile
条目。你提供了一个自定义 makefile,你可以在其中声明表单的构建目标build-
其中包含运行时的构建命令。如有必要,makefile 负责编译自定义运行时,并将构建工件复制到工作流程后续步骤所需的适当位置。makefile 的位置由function-logical-id
CodeUri
函数资源的属性,且必须命名Makefile
.
示例
示例 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 的 Makefile 构建器(替代使用捆绑构建器)
您可能想要使用捆绑构建器中未包含的库或模块。此示例显示了Amazon 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 包含构建目标和将要执行的命令。请注意,CodeUri
属性将设定为hello_world
,所以 makefile 必须位于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