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

如何在另一个CloudFormation模板中引用已定义的SSM参数

方案说明

你可以通过两种常用方式在另一个CloudFormation模板的IAM策略中引用已经创建的SSM参数,具体实现如下:


方法1:直接使用SSM动态引用(无需额外定义模板参数,推荐)

直接通过CloudFormation内置的SSM动态解析语法引用参数,模板更新时会自动拉取SSM存储的最新值,不需要额外调整模板参数结构:

KinesisFirehoseRole:
  Type: AWS::IAM::Role
  Properties:
    AssumeRolePolicyDocument:
      Version: 2012-10-17
      Statement:
        - Effect: Allow
          Principal:
            Service: firehose.amazonaws.com
          Action: sts:AssumeRole
    Path: /
    Policies:
      - PolicyName: KinesisFirehosePolicy
        PolicyDocument:
          Version: 2012-10-17
          Statement:
            - Effect: Allow
              Action:
                - kinesis:*
                - s3:*
                - s3-object-lambda:*
              Resource:
                - !Sub "${Bucket.Arn}/*"
                # 直接动态引用SSM参数
                - !Sub "{{resolve:ssm:/${Environment}/Services/${Domain}/kinesis_stream_arn}}"

注意事项:

  • 确保当前IAM模板中也定义了Environment和Domain参数,取值和创建SSM参数的模板保持一致,才能匹配到正确的SSM参数路径
  • 部署当前模板的CloudFormation执行角色需要拥有ssm:GetParameter权限,权限范围覆盖上述SSM参数路径

方法2:通过SSM类型模板参数拉取值

如果你需要在模板多处复用该ARN值,可以先在IAM模板中定义SSM类型的参数,部署时CloudFormation会自动拉取对应参数值,之后在策略中直接引用即可:
第一步:在IAM模板开头添加参数定义

Parameters:
  # 定义SSM参数类型的模板参数
  KinesisStreamARN:
    Type: AWS::SSM::Parameter::Value<String>
    Description: Kinesis流ARN对应的SSM参数路径
    # 可填默认参数路径,也可部署时手动传入
    Default: /dev/Services/data/kinesis_stream_arn

第二步:在IAM策略的Resource字段中引用该参数

Resource:
  - !Sub "${Bucket.Arn}/*"
  - !Ref KinesisStreamARN

两种方式差异

  • 动态引用方式:栈每次更新都会自动拉取SSM参数的最新值,不需要手动重新传入参数
  • SSM类型模板参数方式:仅在模板部署/更新时拉取一次SSM值,后续SSM参数变更不会主动同步到栈配置中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:45:02