gpt4 book ai didi

amazon-web-services - CloudFormation SecurityGroup 循环引用

转载 作者:行者123 更新时间:2023-12-04 08:00:08 26 4
gpt4 key购买 nike

我正在使用两个需要相互通信的简单网络应用程序。在 AWS CloudFormation 中,我有一个模板,用于创建 EC2 实例并将两个应用程序安装在同一台服务器上(最终我会将它们分开,但目前它们位于同一 EC2 实例上)。

作为 EC2 实例的一部分,我必须定义要使用的 SecurityGroup。目前我一直在使用默认的,但我想动态构建一个。在组中,我允许从我的机器进行 SSH 访问,并允许从盒子到自身的一些端口。

当使用默认组时,我可以将服务器的公共(public)IP添加到它自己的安全组中,以允许它与自身通信。问题是在 CloudFormation 模板期间,我在 SecurityGroup 和 EC2 实例之间收到循环引用。该实例需要一个 SecurityGroup 才能启动,并且该组需要包含 EC2 盒子的公共(public) IP 规则。

是否有更好的方法来做到这一点,或者以某种方式锁定“localhost”的某些内容以暂时允许这些流量进入​​?

最佳答案

您有几个选择:

  1. 您可以为此设置一个自引用安全组,这意味着 EC2 实例将被允许与其自身进行通信,因为它位于该安全组中。有一个警告,那就是不要在 AWS::EC2::SecurityGroup 中使用嵌入的入口和导出规则,而是使用 AWS::EC2::SecurityGroupEgressAWS::EC2::SecurityGroupIngress 分开,如所述 here .

看起来像:

"Resources" : {
"SelfRefSecurityGroup" : {
"Type" : "AWS::EC2::SecurityGroup",
"Properties" : {
"GroupDescription" : "Has access to itself",
"VpcId" : "vpc-xxxxxx"
}
},
"MySecurityGroupIngress" : {
"Type" : "AWS::EC2::SecurityGroupIngress",
"Properties" : {
"GroupId" : { "Ref" : "SelfRefSecurityGroup" },
"IpProtocol" : "tcp",
"ToPort" : "65535",
"FromPort" : "0",
"SourceSecurityGroupId" : { "Ref" : "SelfRefSecurityGroup" }
},
"DependsOn" : "SelfRefSecurityGroup"
}
  • 最佳选择:在框中创建 2 个主机条目(或者更好的是使用 Route53 private hosted zone 设置 dns 条目):

    webapp1.com 127.0.0.1

    webapp2.com 127.0.0.1

  • 我不建议让盒子通过其公共(public) IP 与自身对话。也许您甚至会承担费用! (https://aws.amazon.com/ec2/pricing/on-demand/)加上 SG 的额外维护。

    关于amazon-web-services - CloudFormation SecurityGroup 循环引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962263/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com