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

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

建筑层

构建您在中的声明的图层 AWS 无服务器应用程序模型 (AWS SAM)模板文件,包括 Metadata 资源属性部分,带 BuildMethod 条目。的有效值 BuildMethodAWS Lambda 运行时,或 makefile.

如果指定 makefile,提供自定义makefile,在此您可以声明表单的构建目标 build-layer-logical-id 包含图层的构建命令。如有必要,您的makefile负责编译图层,并将构建工件复制到工作流程中后续步骤所需的适当位置。

以下是一个示例 Metadata 资源属性部分。

Metadata: BuildMethod: python3.6
注意

如果您未包含 Metadata 资源属性部分, AWS SAM 不会构建层。相反,它会从 CodeUri 层资源的属性。有关更多信息,请参见 ContentUri 属性 AWS::Serverless::LayerVersion 资源类型。

当您将 Metadata 资源属性部分,您可以使用 sam构建 命令以作为独立对象或作为 AWS Lambda 功能。

  • 作为独立对象。 您可能只想构建层对象,例如当您本地测试层代码更改时,不需要构建整个应用程序。要独立构建层,请使用 sam build layer-logical-id 命令。

  • 作为 Lambda 功能。 当您在 Layers 属性 Lambda 功能 AWS SAM 模板文件,层是该 Lambda 功能。当该层还包括 Metadata 资源属性部分,带 BuildMethod 条目中,您可通过使用 sam build 命令或通过指定功能资源 sam build function-logical-id 命令。

Examples

模板示例1: 根据Python3.6运行时环境构建层

以下示例 AWS SAM 模板根据Python3.6运行时环境构建一个层。

Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.6 Metadata: BuildMethod: python3.6 # Required to have AWS SAM build this layer

模板示例2: 使用自定义makefile构建层

以下示例 AWS SAM 模板使用自定义makefile构建层。

Resources: MyLayer: Type: AWS::Serverless::LayerVersion Properties: ContentUri: my_layer CompatibleRuntimes: - python3.8 Metadata: BuildMethod: makefile

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

build-MyLayer: mkdir -p "$(ARTIFACTS_DIR)/python" cp *.py "$(ARTIFACTS_DIR)/python" python -m pip install -r requirements.txt -t "$(ARTIFACTS_DIR)/python"

sambuild命令示例

以下 sam build 命令构建层,包括 Metadata 资源属性部分。

# Build the 'layer-logical-id' resource independently sam build layer-logical-id # Build the 'function-logical-id' resource and layers that this function depends on sam build function-logical-id # Build the entire application, including the layers that any function depends on sam build