我在安全组中有多个EC2实例,我想确保所有其他EC2实例都可以访问同一安全组中的任何其他实例。
如果我尝试这样做,我会得到一个循环引用错误:
"XYZSecurityGroup": {
"Type": "AWS::EC2::SecurityGroup",
"Properties": {
"VpcId": {
"Fn::ImportValue": {
"Fn::Sub": "${NetworkStackName}-VPCID"
}
},
"SecurityGroupIngress": [
{
"IpProtocol": "tcp",
"FromPort": "80",
"ToPort": "80"
},
{
"IpProtocol": "tcp",
"FromPort": "27017",
"ToPort": "27017",
"SourceSecurityGroupId": {"Ref": "XYZSecurityGroup"}
}
创建单独的SecurityGroupIngress元素似乎会覆盖我现有的设置。那么如何启用同一安全组中的所有实例才能看到对方?我还希望此安全组接受来自其他安全组的流量。
答案 0 :(得分:1)
如AWS::EC2::SecurityGroup
documentation所述,您可以使用AWS::EC2::SecurityGroupEgress
和AWS::EC2::SecurityGroupIngress
资源来定义自引用安全组规则:
重要强>
如果要在这些安全组的入口和出口规则中交叉引用两个安全组,请使用
AWS::EC2::SecurityGroupEgress
和AWS::EC2::SecurityGroupIngress
资源来定义规则。请勿在{{1}}中使用嵌入式入口和出口规则。如果这样做,则会导致循环依赖,AWS CloudFormation不允许这样做。