我正在尝试创build一个AWS CloudFormation模板,其中包含要为其select特定子网的实例。 如果我指定了子网ID,则出现以下错误The parameter groupName cannot be used with the parameter subnet 。 从阅读这个线程看来,我需要提供安全组ID – 而不是名称。 我如何在CloudFormation中创build一个安全组,然后在事后得到它的ID?
实例configuration的相关部分如下
"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"} ] } },
我如何创build并获取安全组的ID?
你只需要改变这一行:
"SecurityGroups" : [ {"Ref" : "WebServerSecurityGroup"} ],
对此:
"SecurityGroupIds" : [ {"Ref" : "WebServerSecurityGroup"} ],
根据主题上的Cloudformation文档 , SecurityGroups属性仅对EC2安全组有效。 您正在使用VPC,因此您需要使用SecurityGroupIds 。