我有一个使用多个云形成模板构建的应用程序。它们需要相互交互,但是太大/太复杂,无法在一个模板中构建。
的详细信息
假设只有两个模板(有更多的模板)
模板A创建一个安全组(安全组A),其本身是唯一的入口规则。它应用于此模板中执行相同功能的一系列主机。
模板B创建另一个安全组(Security )和一些主机(在弹性豆杆中)。
我如何添加一个进入规则到安全组A的流量从安全组B使用云形成?
我已经查看了文档,我希望创建一个安全组Ingress规则,并将其与安全组A相关联,但就我所能看到的而言,这似乎不可行- http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-security-group-rule.html
我可以使用Security中主机的CIDR范围,因为在构建这些主机之前(所有这些都是在VPC中使用不同的子网),但是我觉得肯定有一种比接受cidr范围的流量更安全的方法。
发布于 2016-06-28 14:14:48
是的,是可以做到的。
您需要将安全组标识符(用于security )作为参数传递到模板B的模板中。从这里,您可以在AWS::EC2::SecurityGroupIngress资源中引用Security。
{
"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-Classc中,那么您将使用GroupName代替。
https://serverfault.com/questions/786705
复制相似问题