AWS SAM 模板解剖结构 - AWS Serverless Application Model
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

AWS SAM 模板解剖结构

一种 AWS SAM 模板文件严格遵循 AWS CloudFormation 模板文件,详见 模板解剖结构AWS CloudFormation 用户指南. 不同区域之间的主要差异 AWS SAM 模板文件和 AWS CloudFormation 模板文件如下:

  • 转换申报。 声明 Transform: AWS::Serverless-2016-10-31 为 AWS SAM 模板文件。这个申报单指明了 AWS CloudFormation 模板文件作为 AWS SAM 模板文件。有关转换的更多信息,请参阅 转型AWS CloudFormation 用户指南.

  • 全局部分。Globals 部分是 AWS SAM. 它定义所有无服务器功能和 APIs。所有 AWS::Serverless::Function, AWS::Serverless::Api,和 AWS::Serverless::SimpleTable 资源继承在 Globals 第节。有关此部分的更多信息,请参阅 的Globals部分 AWS SAM 模板.

  • 资源部分。 英寸 AWS SAM 模板 Resources 部分可以包含 AWS CloudFormation 资源和 AWS SAM 资源。有关 AWS CloudFormation 资源,请参阅 AWS资源和属性类型参考AWS CloudFormation 用户指南. 有关 AWS SAM 资源的更多信息,请参阅 AWS SAM 资源和属性参考

  • 参数章节。 在中声明的对象 Parameters 导致 sam deploy --guided 命令向用户呈现其他提示符。有关已声明对象和相应提示的示例,请参阅 sam deploy 在 AWS SAM CLI命令参考。

的所有其他部分 AWS SAM 模板文件对应于 AWS CloudFormation 相同名称的模板文件部分。

YAML

以下示例显示 YAML 格式的模板片段。

Transform: AWS::Serverless-2016-10-31 Globals: set of globals Description: String Metadata: template metadata Parameters: set of parameters Mappings: set of mappings Conditions: set of conditions Resources: set of resources Outputs: set of outputs

模板部分

AWS SAM 模板可以包括几个主要部分。只有 TransformResources 部分为必填项。

您可以按任何顺序包括模板部分。但是,当您构建模板时,使用下面列表中所示的逻辑顺序可能会有所帮助。这是因为某个部分的值可能引用上一部分的值。

转换(必需)

对于 AWS SAM 模板中,您必须包含这个部分,其值为 AWS::Serverless-2016-10-31.

其他转换是可选的。有关转换的更多信息,请参阅 转型AWS CloudFormation 用户指南.

全局(可选)

所有无服务器功能通用的属性, APIs和简单的表格。所有 AWS::Serverless::Function, AWS::Serverless::Api,和 AWS::Serverless::SimpleTable 资源继承在 Globals 第节。

此部分是 AWS SAM. 中没有相应的部分 AWS CloudFormation 模板。

Description (可选)

一个描述模板的文本字符串。

本节直接对应 Description 部分 AWS CloudFormation 模板。

元数据(可选)

提供有关模板的其他信息的对象。

本节直接对应 Metadata 部分 AWS CloudFormation 模板。

Parameters(可选)

要在运行时 (创建或更新堆栈时) 传递到模板的值。您可引用模板的 ResourcesOutputs 部分中的参数。

使用传递的值 --parameter-overrides 参数 sam deploy 命令—以及配置文件中的条目—优先于 AWS SAM 模板文件。有关 sam deploy 命令,请参阅 sam deploy 在 AWS SAM CLI命令参考。有关配置文件的更多信息,请参阅AWS SAM CLI配置文件

Mappings(可选)

可用来指定条件参数值的密钥和关键值的映射,与查找表类似。您可以使用 Fn::FindInMap 内在功能 ResourcesOutputs 第节。

本节直接对应 Mappings 部分 AWS CloudFormation 模板。

条件(可选)

用于控制是否创建某些资源或者是否在堆栈创建或更新过程中为某些资源属性分配值的条件。例如,您可以根据堆栈是用于生产环境还是用于测试环境来按照条件创建资源。

本节直接对应 Conditions 部分 AWS CloudFormation 模板。

Resources(必需)

堆栈资源及其属性,例如 Amazon Elastic Compute Cloud (人Amazon EC2)实例或 Amazon Simple Storage Service (人Amazon S3)桶。您可引用模板的 ResourcesOutputs 部分中的资源。

本节类似于 Resources 部分 AWS CloudFormation 模板。英寸 AWS SAM 模板,这个部分可以包含 AWS SAM 资源,以及 AWS CloudFormation 资源。

Outputs(可选)

查看堆栈属性时返回的值。例如,您可以声明S3bucket名称的输出,然后调用 aws cloudformation describe-stacks AWS Command Line Interface (人AWS CLI)命令以查看名称。

本节直接对应 Outputs 部分 AWS CloudFormation 模板。

后续步骤

要下载和部署包含 AWS SAM 模板文件,请参阅 AWS SAM 入门 并按照 教程: 部署HelloWorld应用程序.