Ссылка на перекрестный стек AWS для группы безопасности - ошибка - PullRequest
0 голосов
/ 04 июля 2018

у меня ниже 2 стеков 1) Стек 1 - это сетевой стек, определяет vpc, подсети и группу безопасности. 2) Стек 2 - этот стек определяет экземпляр ec2

Экспорт сетевого стека после

   WebServerSG:
     Description : "Web Server Security Group"
     Value: !GetAtt InstanceSecurityGroup.GroupId
     Export:
       Name: !Sub ${AWS::StackName}-WebServerSG

Стек экземпляра ec2 принимает параметр "NetworkStack" и использует сетевой стек для ссылки на группу безопасности следующим образом

  "Resources" : {
    "WebServerInstance": {
      "Type": "AWS::EC2::Instance",
      "Properties": {
        "ImageId" : { "Fn::FindInMap" : [ "AWSRegionArch2AMI", { "Ref" : "AWS::Region" },
                          { "Fn::FindInMap" : [ "AWSInstanceType2Arch", { "Ref" : "InstanceType" }, "Arch" ] } ] },
        "InstanceType"   : { "Ref" : "InstanceType" },
        "SubnetId" : {"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStack}-SubnetADMZ"}},
        "SecurityGroupIds" : {"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStack}-WebServerSG"}},
        "KeyName"  : { "Ref" : "KeyName" }
        }
    }
  },

Стек экземпляра ec2 завершается с ошибкой «Значение свойства SecurityGroupIds должно иметь тип List of String»

Я пытался использовать SecurityGroups вместо этого, но получил похожую ошибку

1 Ответ

0 голосов
/ 05 июля 2018

Даже если вы хотите указать только 1 группу безопасности, CloudFormation хочет список. Решением здесь является создание списка из одного элемента, причем этот элемент является импортированной группой безопасности. В вашем случае это будет выглядеть так (обратите внимание на скобки):

...
"SecurityGroupIds" : [{"Fn::ImportValue" : {"Fn::Sub" : "${NetworkStack}-WebServerSG"}}],
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...