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

Use SSM parameter whose name depends on a CFN parameter

我有一个如下所示的 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 参数,因为在实践中可能有很多。

您应该能够在模板中使用对 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