如何在另一个模板中引用 SSM 参数

How to reference SSM parameter in another template

如果在云形成中定义一个 SSM 参数,一个这样的模板

  KinesisStreamARNParameter:
    Type: AWS::SSM::Parameter
    Properties:
      Name: !Sub "/${Environment}/Services/${Domain}/kinesis_stream_arn"
      Type: String
      Value: !GetAtt KinesisStream.Arn

如何在定义角色的不同模板文件中使用?我如何在政策资源下提及它?

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}/*"

一般有两种选择:

  1. Export the arn of your KinesisStreamARNParameter in the outputs. Then use ImportValue 以引用它作为您的第二个模板。

  2. 将 arn 作为输入参数传递给您的第二个模板。这将要求您在部署第二个模板时手动提供值,或者创建一些自动化包装器在部署前为您填充该值。