Как использовать вложенные списки в CloudFormation? - PullRequest
0 голосов
/ 11 февраля 2019

Я хочу присоединить 3 группы безопасности к экземпляру EC2.Один, который создается в шаблоне, а два других существует, где я использую отображение.Я получаю сообщение об ошибке, когда использую вот так.

Mappings:
  envMap: 
    qa:
      "securityGroups":
        - sg-xxxxxxxx
        - sg-yyyyyyyy

Вот ресурсы, которые я создаю ....

Resources:
     InstanceSecurityGroup:
      Type: AWS::EC2::SecurityGroup
      Properties:
        GroupDescription: Allow http to client host
        SecurityGroupIngress:
          - IpProtocol: tcp
            FromPort: 80
            ToPort: 80
            CidrIp: 0.0.0.0/0

        EC2Instance:
      Type: AWS::EC2::Instance
      Properties:
        ImageId: !FindInMap [ envMap, !Ref env, ImageID ]
        InstanceType:
          !Ref 'InstanceSize'
        KeyName: !FindInMap [ envMap, !Ref env, KeyPairName ]
        SecurityGroupIds: [!Ref 'InstanceSecurityGroup',!FindInMap [ envMap, !Ref env, securityGroups ] ]
        SubnetId: !FindInMap [ envMap, !Ref env, Subnets ]

1 Ответ

0 голосов
/ 11 февраля 2019

Вероятно, не нравится вставка списка (возвращаемого из сопоставления) в список SecurityGroupsIds.Это поместило бы список в список.

Если вы намерены всегда включать определенные группы безопасности, и вы жестко программируете значение этих групп безопасности, то вы можете использовать:

    SecurityGroupIds: [!Ref 'InstanceSecurityGroup','sg-xxxxxxxx', 'sg-yyyyyyyy' ] ]

Я не тестировал этот синтаксис, поэтому, пожалуйста, попробуйте, чтобы он работал.

Чтобы сделать его немного чище, вы можете указать эти группы безопасности в качестве значений по умолчанию в параметрах и вставить их изесть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...