AWS SAM 支持的资源属性 - AWS Serverless Application Model

AWS SAM 支持的资源属性

资源属性是可添加至 AWS SAM 和 CloudFormation 资源以控制其他行为和关系的属性。有关资源属性的更多信息,请参阅《AWS CloudFormation 用户指南》中的资源属性引用

AWS SAM 支持由 CloudFormation 定义的资源属性的子集。在支持的资源属性中,有些仅复制到相应 AWS SAM 资源的基础生成的 CloudFormation 资源中,有些则复制到由相应 AWS SAM 资源产生的所有生成的 CloudFormation 资源中。有关从相应 AWS SAM 资源生成的 CloudFormation 资源的更多信息,请参阅 为 AWS SAM 生成的 CloudFormation 资源

下表汇总了 AWS SAM 对资源属性的支持,具体视下方所列 异常 而定。

资源属性 目标生成的资源

DependsOn

元数据 1, 2

仅基础 CloudFormation 生成的资源。有关 AWS SAM 资源和基础 CloudFormation 资源之间映射的信息,请参阅 生成的 CloudFormation 资源场景

Condition

DeletionPolicy

UpdateReplacePolicy

所有从相应 AWS SAM 资源生成的 CloudFormation 资源。有关生成 CloudFormation 资源的场景的信息,请参阅 生成的 CloudFormation 资源场景

注意:

  1. 有关使用 Metadata 资源属性和 AWS::Serverless::Function 资源类型的更多信息,请参阅 在 AWS SAM 中构建具有自定义运行时的 Lambda 函数

  2. 有关使用 Metadata 资源属性和 AWS::Serverless::LayerVersion 资源类型的更多信息,请参阅 在 AWS SAM 中构建 Lambda 层

异常

前面描述的资源属性规则有许多例外情况:

  • 对于 AWS::Lambda::LayerVersion,仅适用于 AWS SAM 的自定义字段 RetentionPolicy 为生成的 CloudFormation 资源设置 DeletionPolicy。它的优先级高于 DeletionPolicy 其本身。如果两者均未设置,则默认将 DeletionPolicy 设置为 Retain

  • 对于 AWS::Lambda::Version,如果未指定 DeletionPolicy,则默认为 Retain

  • 对于为无服务器函数指定 DeploymentPreferences 的场景,资源属性不会复制到以下生成的 CloudFormation 资源中:

    • AWS::CodeDeploy::Application

    • AWS::CodeDeploy::DeploymentGroup

    • 为此场景创建的名为 CodeDeployServiceRoleAWS::IAM::Role

  • 如果您的 AWS SAM 模板包含多个带有隐式创建的 API 事件源的函数,则这些函数将共享生成的 AWS::ApiGateway::RestApi 资源。在这种情况下,如果函数具有不同的资源属性,则对于生成的 AWS::ApiGateway::RestApi 资源,AWS SAM 将根据以下优先级列表复制资源属性:

    • UpdateReplacePolicy:

      1. Retain

      2. Snapshot

      3. Delete

    • DeletionPolicy:

      1. Retain

      2. Delete