【问题标题】:Reference SecurityGroup from another cloudformation template inside VPC从 VPC 内的另一个 cloudformation 模板引用 SecurityGroup
【发布时间】:2014-08-08 03:29:00
【问题描述】:

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

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

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

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

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

编辑:

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

【问题讨论】:

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


    【解决方案1】:

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

    原答案

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

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

    【讨论】:

    • 所以你说我可以做以下之一:明确输入ID作为参数;对模板中的 ID 进行硬编码;或使用SourceSecurityGroupName。我什至可以使用SourceSecurityGroupName 吗?文档说,“对于 VPC 中的实例,请指定 SourceSecurityGroupId 属性。”
    • 在python中这样做是如何解决的?您仍然需要生成模板。还是使用 boto 来检索所需的 GroupId,然后将其输入到模板中?
    • 我的错误,您是正确的,您不能在 VPC 中使用 SourceSecurityGroupName。是的,我使用 boto 来查找组 ID。所以就像我说的,不支持跨 VPC 引用。
    • 因此,如果我想要它作为普通的 cloudformation 模板,最好的办法是硬编码模板中的 ID (feh) 或将其作为参数要求?
    • 是的,没错。除非您以编程方式进行,否则这些都是您的选择。
    【解决方案2】:

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

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

    【讨论】:

    • 这很酷。所以你正在使用发布/订阅队列以编程方式传递参数?
    • 没错。您还可以设置 AWS Lambda 函数来处理来自 CFN 的请求,避免管理自己的进程/队列
    • 这比在本地用 Python 或其他编程语言做的要好,但我不想在一年后切换选定的答案。我会投票。
    • 您可以使用 Lambda 来执行此操作吗?蛮狂野的。某处有例子吗?您是否有要点或 AWS 是否有两个 CFN 模板通过 Lambda 进行通信的示例?
    猜你喜欢
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2020-10-22
    • 2014-08-03
    • 2018-04-08
    • 1970-01-01
    • 2017-03-04
    • 2012-07-05
    相关资源
    最近更新 更多