从VPC内的另一个云形成模板引用SecurityGroup

时间:2014-06-18 00:29:34

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

我有一个VPC(通过cloudformation创建),它为该VPC中创建的所有堆栈创建了一些公共共享基础架构,例如: ssh jumphost和ssh jumphost的安全组。

我有一个单独的云形成模板,可以在现有VPC中创建Web + App + DB堆栈。

如何从第一个模板中定义的常见ssh jumphost中允许入站ssh 22到我的堆栈模板中的实例?

根据文档,在VPC中我需要指定SourceSecurityGroupId,它必须具有实际的VPC ID或使用Ref函数来查找这个模板。

如何在同一个VPC中引用现有的SG,但是从另一个模板引用?

编辑:

通过NAT实例出站的相同问题。 NAT实例是在VPC级别提供的,但每个堆栈都需要其安全组才能允许对 NAT实例的出站访问。

2 个答案:

答案 0 :(得分:7)

更新:自我原来的回答以来,这已经改变了。另请参阅Vor下面的答案,建议使用custom resources and Lambda来允许跨堆栈引用。

原始答案

不支持从另一个堆栈引用资源,因此您无法使用Ref()。您可以使用SourceSecurityGroupId(按照建议)并将其作为parameter传递,和/或您可以使用SourceSecurityGroupName。但是,Cloudformation无法以编程方式引用另一个堆栈。

我喜欢使用Python,boto和troposphere library编写Cloudformation模板来解决代码中的问题。

答案 1 :(得分:2)

上一个答案的替代方法是创建CustomResource。您可以在订阅SQS队列的EC2上运行服务。一旦CFN到达CustomResource,它就会向您提供的主题发送SNS通知。然后,您的服务将收到通知,处理请求并回复。

还有一个图书馆可以帮助您设置custom service https://github.com/aws/aws-cfn-resource-bridge