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

Posted

技术标签:

【中文标题】Cloud Formation 模板将入口规则添加到现有安全组【英文标题】:Cloud Formation template add ingress rule to existing security group 【发布时间】:2016-10-30 21:19:26 【问题描述】:

问题范围

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

场景详情

想象一下只有两个模板(还有很多)

模板 A 模板 B

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

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

问题

我想使用云形成安全组B的流量添加一个入口规则到安全组A

我尝试了什么

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

其他选择

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

【问题讨论】:

【参考方案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" 
            
        
    
 

【讨论】:

以上是关于Cloud Formation 模板将入口规则添加到现有安全组的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Cloud Formation 模板中使列表项有条件?

我能否在 SAM 模板中使用 AWS Cloud Formation 资源语法,反之亦然?

Cloud Formation:环境无法启动,因为它进入了已终止状态

Cloud Formation 将多个 S3 触发器添加到 LambdaConfigurations 中的同一个 S3 存储桶

如何使用 Cloud Formation 模板在 S3 存储桶上设置 SSE-S3 或 SSE-KMS 加密?

如何在 Elastic Beanstalk Cloud Formation 脚本中强制 ELB 配置