(とりわけ)VPC、いくつかのセキュリティグループ、および少数のEC2インスタンスを作成するcfnスタックがあります。スタック内で作成されたセキュリティグループを、スタックによって作成されたインスタンスに割り当てることは簡単です。ただし、デフォルトのVPC SGに興味があります。
VPCが作成されると(GUIを介して手動で、cloudformation、またはその他の方法で)、AWSはそのグループ内のすべてのインスタンスに対して「すべて許可」ルールを使用してデフォルトのセキュリティグループを作成します。
私がやろうとしているのは、このデフォルトのセキュリティグループと他のいくつかのSGをスタックによって作成されたインスタンスに割り当てることです。これは、私が予想したよりもはるかに難しいことが証明されています。ここに私が何をしているかを示すスニペットがあります:
"AllowSSHSecGroup":{
"Type":"AWS::EC2::SecurityGroup",
"Properties":{
"GroupDescription":"Allow SSH from anywhere",
"VpcId":{
"Ref":"DevVPC"
},
"SecurityGroupIngress":[
{
"IpProtocol":"tcp",
"FromPort":"22",
"ToPort":"22",
"CidrIp":"0.0.0.0/0"
}
]
}
},
"Instance001" : {
"Type" : "AWS::EC2::Instance",
"Properties" : {
"ImageId" : "ami-7eab224e",
"InstanceType" : "m1.large",
"AvailabilityZone" : "us-west-2a",
"PrivateIpAddress" : "10.22.0.110",
"SecurityGroupIds" : [ {"Ref" : "AllowSSHSecGroup"} ],
"SubnetId" : { "Ref" : "PublicSubnet" },
"KeyName" : "erik-key",
"DisableApiTermination" : "false",
"Tags" : [ { "Key": "Name", "Value": "Instance001"} ]
}
}
上記のスニペットでは、「allow ssh」セキュリティグループを作成し、それをインスタンスに割り当てています。前述のように、私のスタックはVPC(このインスタンスが起動される)も作成し、これがデフォルトのセキュリティグループを作成します。残念ながら、このグループはAWSによって自動的に作成されるため、そのグループIDはスタックで使用できず、IDで参照することはできません。当初、SecurityGroups
プロパティはオプションであると考えていましたdefault
。これにより、デフォルトのSGをその名前で参照できるようになります。ただし、このSecurityGroups
プロパティはEC2セキュリティグループ専用であり、VPCセキュリティグループ用ではないため、機能しません。
だから私は立ち往生しています。私がしているこの上のAWSをサポートしたケースを開け、これまでのところ、彼らは参考にされていませんでした。これを達成する方法についてのアイデアはありますか?
SecurityGroupIngress
、あなたの合成、デフォルトのセキュリティグループを参照して、あなたは、単一のスタックの展開の中、あなたがしたいことを、自己参照を取得することができ、