使用Cloud Formationconfiguration特定子网的安全组

概要

我正在尝试创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