Я пытаюсь создать шаблон 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
.