Использование выделенной группы безопасности Cloud Formation с определенной подсетью

Резюме

Я пытаюсь создать шаблон AWS CloudFormation, который содержит экземпляр, для которого я хочу выбрать определенную подсеть. Если я укажу идентификатор подсети, я получу следующую ошибку The parameter groupName cannot be used with the parameter subnet, После прочтения этой темы выясняется, что мне нужно предоставить идентификаторы группы безопасности, а не имена. Как я могу создать группу безопасности в CloudFormation и затем получить ее идентификатор после факта?

подробности

Соответствующая часть конфигурации экземпляра выглядит следующим образом

"WebServerHost": {
  "Type" : "AWS::EC2::Instance",
 <..skipping metadata...>
 "Properties": {
    "ImageId" : { "ami-1234" },
    "InstanceType" : { "Ref" : "WebServerInstanceType" },
    "SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ],
    "SubnetId"       : "subnet-abcdef123",

и группа безопасности выглядит следующим образом

"WebServerSecurityGroup" : {
  "Type" : "AWS::EC2::SecurityGroup",
  "Properties" : {
    "GroupDescription" : "Enable HTTP and SSH",
    "SecurityGroupIngress" : [
      {"IpProtocol" : "tcp", "FromPort" : "80", "ToPort" : "80", "CidrIp" : "0.0.0.0/0"},
      {"IpProtocol" : "tcp", "FromPort" : "22", "ToPort" : "22", "CidrIp" : "0.0.0.0/0"}
    ]
  }
},

Как я могу создать, а затем получить идентификатор этой группы безопасности?

1 ответ

Решение

Вам просто нужно изменить эту строку:

"SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ],

к этому:

"SecurityGroupIds" : [ {"Ref" : "WebServerSecurityGroup"} ],

Согласно документации Cloudformation по теме, SecurityGroups Атрибут действителен только для групп безопасности EC2. Вы используете VPC, поэтому вам нужно использовать SecurityGroupIds,

Другие вопросы по тегам