资源属性 - AWS Serverless Application Model

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

资源属性

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

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

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

资源属性 目标生成的资源

DependsOn

元数据 1, 2

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

Condition

DeletionPolicy

UpdateReplacePolicy

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

备注:

  1. 有关使用 Metadata 资源属性和 AWS::Serverless::Function 资源类型的更多信息,请参阅 构建自定义运行时系统

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

异常

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

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

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

  • 对于为无服务器函数指定 DeploymentPreferences 的场景,资源属性不会复制到以下生成的 AWS 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