首页 文章

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

提问于
浏览
8

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

我有一个单独的cloudformation模板,用于在现有VPC中创建Web App DB堆栈 .

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

根据文档,在VPC中我需要指定 SourceSecurityGroupId ,它必须具有实际的VPC ID或使用 Ref 函数来查找 this 模板中定义的安全组的ID .

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

编辑:

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

2 回答

  • 2

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

    Original Answer

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

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

  • 7

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

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

相关问题