概括
我正在尝试创建一个 AWS CloudFormation 模板,其中包含一个我想为其选择特定子网的实例。如果我指定子网 ID,则会出现以下错误The parameter groupName cannot be used with the parameter subnet
。从阅读此主题看来我需要提供安全组 ID,而不是名称。如何在 CloudFormation 中创建安全组,然后在事后获取其 ID?
细节
实例配置的相关部分如下
"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"}
]
}
},
我如何创建并获取该安全组的 ID?
答案1
您只需更改此行:
"SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ],
更改为:
"SecurityGroupIds" : [ {"Ref" : "WebServerSecurityGroup"} ],
根据Cloudformation 文档关于主题,该SecurityGroups
属性仅对 EC2 安全组有效。您正在使用 VPC,因此您需要使用SecurityGroupIds
。