从自己继承安全组

时间:2017-02-02 17:51:56

标签: amazon-web-services amazon-cloudformation

我在安全组中有多个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元素似乎会覆盖我现有的设置。那么如何启用同一安全组中的所有实例才能看到对方?我还希望此安全组接受来自其他安全组的流量。

1 个答案:

答案 0 :(得分:1)

AWS::EC2::SecurityGroup documentation所述,您可以使用AWS::EC2::SecurityGroupEgressAWS::EC2::SecurityGroupIngress资源来定义自引用安全组规则:

  

重要

     

如果要在这些安全组的入口和出口规则中交叉引用两个安全组,请使用AWS::EC2::SecurityGroupEgressAWS::EC2::SecurityGroupIngress资源来定义规则。请勿在{{1​​}}中使用嵌入式入口和出口规则。如果这样做,则会导致循环依赖,AWS CloudFormation不允许这样做。