问题范围
我有一个使用多个云形成模板构build的应用程序。 他们需要互相交stream,但是太大/太复杂,无法在一个模板中构build。
场景的细节
想象一下,只有两个模板(显着更多)
模板A创build一个安全组(安全组A)作为唯一的入口规则。 它应用于此模板中执行相同function的一系列主机。
模板B创build另一个安全组(安全组B)和一些主机(在弹性beanstalk中)。
题
如何使用云形成为来自安全组B的stream量添join口规则到安全组A ?
我试过了什么
我已经查看了文档,我想创build一个安全组Ingress规则,并将其与安全组A关联,但似乎并不可行,据我所见 – http://docs.aws.amazon.com /AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
其他select
我可以使用安全组B中所有主机的CIDR范围,因为在构build这些主机之前,所有这些主机都是已知的(所有VPC都有独立的子网),但是我觉得必须有比接受来自cidr范围。
是的,可以做到。
您需要将安全组标识符(对于安全组A)传递给模板B的模板作为参数。 从那里,您可以在AWS::EC2::SecurityGroupIngress资源中引用安全组A.
{ "AWSTemplateFormatVersion" : "2010-09-09", "Parameters" : { "SecurityGroupA" : { "Description" : "Security group to add Ingress rule to", "Type" : "AWS::EC2::SecurityGroup::Id" } }, "Resources" : { "LocalSecurityGroup": { "Type": "AWS::EC2::SecurityGroup" }, "InboundRule": { "Type": "AWS::EC2::SecurityGroupIngress", "Properties":{ "IpProtocol": "tcp", "FromPort": "80", "ToPort": "80", "SourceSecurityGroupId": { "Fn::GetAtt": [ "LocalSecurityGroup", "GroupId" ] }, "GroupId": { "Fn::GetAtt": [ "SecurityGroupA", "GroupId" ] } } } } }
请注意,此示例使用安全组ID,安全组在VPC中时就是这种情况。 如果他们在EC2-Classic中,则可以使用GroupName 。