Cloud Formation模板将入口规则添加到现有安全组

时间:2016-06-28 13:47:24

标签: amazon-web-services amazon-ec2 amazon-cloudformation

问题范围

我有一个使用多个云形成模板构建的应用程序。他们需要相互交互,但是太大/太复杂,无法在一个模板中构建。

方案详情

想象一下,只有两个模板(显着更多)

  • 模板A
  • 模板B

模板A创建一个安全组(安全组A),其自身是唯一的入口规则。它适用于此模板中执行相同功能的一系列主机。

模板B创建另一个安全组(安全组B)和许多主机(在弹性beanstalk中)。

问题

我想使用云计算为来自安全组B 的流量向安全组A 添加入口规则?

我尝试了什么

我查看了文档,我想创建一个安全组Ingress规则并将其与安全组A相关联,但据我所知,这似乎不可行 - http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html

其他替代方案

我可以使用安全组B中的主机的CIDR范围,因为在构建任何这些主机之前已知这些主机(所有这些都在具有单独子网的VPC中)但是我觉得必须有比接受更安全的方式来自cidr范围的流量。

1 个答案:

答案 0 :(得分:1)

AWS :: EC2 :: SecurityGroupIngress就是答案。

http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-ingress.html

将安全组A ID作为参数SGBase传递给模板B.然后创建这样的资源。

{
    "AWSTemplateFormatVersion": "2010-09-09",
    "Resources": {
        "SGBaseIngress": {
            "Type": "AWS::EC2::SecurityGroupIngress",
            "Properties": {
                "GroupName": { "Ref": "SGBase" },
                "IpProtocol": "tcp",
                "FromPort": "80",
                "ToPort": "80",
                "SourceSecurityGroupName": { "Ref": "SGBase" }
            }
        }
    }
}