Назад | Перейти на главную страницу

Использование группы безопасности, предоставленной 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"}
    ]
  }
},

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

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

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

к этому:

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

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