使用名称取决于CFN参数的SSM参数

时间:2019-11-15 16:06:24

标签: amazon-web-services amazon-cloudformation aws-parameter-store

我有一个CloudFormation模板,看起来类似于以下内容:

AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  env:
    Type: String
    Default: NONE
Resources:
  GraphQLAPI:
    Type: AWS::AppSync::GraphQLApi
    Properties:
      Name: !Sub 'my-api-${env}'
      AuthenticationType: AMAZON_COGNITO_USER_POOLS
      UserPoolConfig:
        UserPoolId: <something>
        AwsRegion: !Ref AWS::Region
        DefaultAction: ALLOW

假设我已经有一个名为/dev/cognitoUserPoolId的SSM参数。创建此模板并传递env = dev时,我想将该参数的值用作UserPoolId。我想避免为每个SSM参数手动传递一个新的CFN参数,因为实际上可能有很多。

1 个答案:

答案 0 :(得分:2)

您应该能够对模板中的SSM参数使用动态引用。

类似:

AWSTemplateFormatVersion: '2010-09-09'
Parameters:
  env:
    Type: String
    Default: NONE
Resources:
  GraphQLAPI:
    Type: AWS::AppSync::GraphQLApi
    Properties:
      Name: !Sub 'my-api-${env}'
      AuthenticationType: AMAZON_COGNITO_USER_POOLS
      UserPoolConfig:
        UserPoolId: !Sub '{{resolve:ssm:/${env}/cognitoUserPoolId:1}}'
        AwsRegion: !Ref AWS::Region
        DefaultAction: ALLOW

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/dynamic-references.html