繁体   English   中英

如何在Cloudformation内部的安全组中使用EC2 IP地址

[英]How to use an EC2 ip address in a Security Group inside cloudformation

我对cloudformation有点陌生,并且在参数设置或查找有关如何在我的安全组中引用ec2 IP地址的信息时遇到麻烦。 两者在我的堆栈中定义,我的SG取决于EC2。 这是我的SG:

        "3DEXPPLAT": {
        "Type": "AWS::EC2::SecurityGroup",
        "Properties": {
            "GroupDescription": "3DPLAT SG",
            "SecurityGroupIngress": [
                {
                    "IpProtocol": "tcp",
                    "FromPort": 80,
                    "ToPort": 80,
                    "CidrIp": {"Ref" : "CFAPA"}
                }
            ],
            "Tags": [
                {
                    "Key": "Name",
                    "Value": "STACK_3DEXPSG"
                }
            ]
        },
        "Metadata": {
            "AWS::CloudFormation::Designer": {
                "id": "59898995-0f8d-4cbe-b315-c9c68df319b2"
            }
        },
        "DependsOn": [
            "CFAPA"
        ]
    }

那么,我应该在SecurityGroupIngress的CidrIp中放置什么以使我的SG使用EC2的专用IP?

在EC2实例上使用Fn::Ref时,您正在检索其实例ID。 对于您的安全组,您需要IP(使用Fn::GetAtt ),并且需要将其格式化为CIDR块(使用Fn::Sub添加表示法)。 因此,假设CFAPA是您的EC2实例,这应该可以工作:

{
    "3DEXPPLAT": {
        "Type": "AWS::EC2::SecurityGroup",
        "Properties": {
            "GroupDescription": "3DPLAT SG",
            "SecurityGroupIngress": [
                {
                    "IpProtocol": "tcp",
                    "FromPort": 80,
                    "ToPort": 80,
                    "CidrIp": {
                        "Fn::Sub": "${CFAPA.PrivateIp}/32"
                    }
                }
            ]
        }
    }
}

笔记:

  • 您不需要指定DependsOn属性,因为CloudFormation会根据引用找出依赖关系。 这简化了代码。

  • 要找出要在Fn::GetAtt上使用的属性称为PrivateIp ,您必须参考AWS :: EC2 :: Instance文档的“返回值”部分。 在这里您会注意到Fn::Ref返回实例ID。

  • 请记住,私有IP可能会更改。 因此,您可能希望将CFAPA附加到另一个安全组,并根据安全组成员身份创建权限。 不过,这是架构决定。

这是错误的方法。

您应该指定另一个安全组作为源( doc ),而不是引用内部节点的显式IP地址。 一种常见的方法是为每个应用程序定义一个安全组,并将这些组附加到组成该应用程序的ELB,EC2和RDS实例。

您最多可以将5个安全组附加到网络接口,因此此“内部通信”组可以是您可能使用的任何“外部通信”组的补充(例如,ELB上接受流量的规则)来自网络)。

CloudFormation的一项警告:您将无法内联定义入口规则。 相反,您将需要一个单独的入口规则定义 ,该定义引用已定义的安全组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM