为 AWS SAM 生成的 CloudFormation 资源 - AWS Serverless Application Model

为 AWS SAM 生成的 CloudFormation 资源

本节提供有关 AWS SAM 处理您的 AWS 模板时创建的 CloudFormation 资源的详细信息。AWS SAM 生成的 CloudFormation 资源集因您指定的场景而异。场景是在模板文件中指定的 AWS SAM 资源和属性的组合。您可以在模板文件中的其他位置引用生成的 CloudFormation 资源,类似于引用在模板文件中明确声明的资源。

例如,如果您在 AWS SAM 模板文件中指定了 AWS::Serverless::Function 资源,则 AWS SAM 总是会生成 AWS::Lambda::Function 基本资源。如果您还指定了可选的 AutoPublishAlias 属性,则 AWS SAM 还会生成 AWS::Lambda::AliasAWS::Lambda::Version 资源。

本节列出了各种场景及其会生成的 CloudFormation 资源,并说明如何在 AWS SAM 模板文件中引用生成的 CloudFormation 资源。

引用生成的 CloudFormation 资源

有两种方法可在 AWS SAM 模板文件中引用生成的 CloudFormation 资源:通过 LogicalId,或通过可引用属性。

通过 LogicalId 引用生成的 CloudFormation 资源

AWS SAM 生成的每个 CloudFormation 资源都有一个 LogicalId,该 ID 是模板文件中唯一的字母数字标识符(A-Z、a-z、0-9)。AWS SAM 使用模板文件中 AWS SAM 资源的 LogicalIds 来构造它生成的 CloudFormation 资源的 LogicalIds。您可以使用生成的 CloudFormation 资源的 LogicalId 在模板文件中访问该资源的属性,就像访问已明确声明的 CloudFormation 资源一样。相关 CloudFormation 和 AWS SAM 模板中的 LogicalIds 的更多信息,请参阅《AWS CloudFormation 用户指南》中的资源

注意

某些生成的资源的 LogicalIds 包含唯一哈希值,以避免命名空间冲突。这些资源的 LogicalIds 是在创建堆栈时派生的。在使用 AWS 管理控制台、AWS CLI 或其中一个 AWS 软件开发工具包创建堆栈后,您才能检索它们。我们不建议通过 LogicalId 引用这些资源,因为哈希值可能会发生变化。

通过可引用属性引用生成的 CloudFormation 资源

对于某些生成的资源,AWS SAM 会提供 AWS SAM 资源的可引用属性。您可以使用此属性在 AWS SAM 模板文件中引用生成的 CloudFormation 资源及其属性。

注意

并非所有生成的 CloudFormation 资源都具有可引用属性。对于这些资源,必须使用 LogicalId

生成的 CloudFormation 资源场景

下表汇总了构成会生成 CloudFormation 资源的场景的 AWS SAM 资源和属性。场景列中的主题提供了有关 AWS SAM 会为该场景生成的其他 CloudFormation 资源的详细信息。