1

我有一个如下所示的 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. 当我创建这个模板并传递 env=dev 时,我想将该参数的值用作UserPoolId. 我想避免为每个 SSM 参数手动传递一个新的 CFN 参数,因为实际上可能有很多。

4

1 回答 1

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

于 2019-11-15T16:29:51.590 回答