You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SAM模板(YAML)中引用Metadata名称及获取CloudFormation栈名称?

SAM模板问题解答

1. 引用Metadata.Name报错的原因及修复

CloudFormation内置函数(如Fn::Sub)无法直接读取模板根层级的Metadata字段——Metadata仅用于向工具、服务(比如AWS Serverless Repository)提供元数据,不属于资源属性可直接调用的变量范畴。

修复方案:将需要复用的名称值抽离到Parameters中,实现一处定义多处引用:

Parameters:
  AppName:
    Type: String
    Default: My-Serverless

Metadata:
  AWS::ServerlessRepo::Application:
    Name: !Ref AppName
    Description: My Serverless
    SemanticVersion: 1.0.0

Resources:
  ConfigurationParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name:
        Fn::Sub: config/${AppName}
      Type: String
      Value: false

2. 获取CloudFormation栈名称的方法

可以直接使用CloudFormation的**伪参数AWS::StackName**获取当前栈名称,无需额外配置:

拼接使用(结合Fn::Sub)

Resources:
  ConfigurationParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name:
        Fn::Sub: config/${AWS::StackName}
      Type: String
      Value: false

直接引用

如果不需要字符串拼接,直接用!Ref AWS::StackName即可获取栈名称的原始字符串。

内容的提问来源于stack exchange,提问作者wapt49

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 14:48:23