如何在 AWS CloudFormation 中描述实例

问题描述

我正在尝试编写一个 cloudformation 模板,其中安全组入口规则将包含现有 EC2 实例的安全组。 它应该具有以下属性

  • 用户不必输入安全组作为参数。
  • Cloudformation 不会创建 ec2。
  • 相反,cloudformation 将搜索该现有实例并找出其安全组,然后我们将使用 Fn::GetAttr 来使用它。

我知道我们可以从 aws cli 做一个描述实例,并将安全组作为 cloudformation 模板的输入,但我想可以从 Cloudformation 模板本身做同样的事情。

一个小例子会很有帮助。谢谢

解决方法

我想从 Cloudformation 模板本身也可以做到同样的事情。

是的,可以使用 custom resources 来完成。自定义资源将是一个 lambda 函数,它将使用 AWS 开发工具包的 describe-instance 进行搜索、查找安全组 ID 并返回到 CloudFormation。

关于示例,您可以查看我对此question的回答。对于答案,我开发了类似的自定义资源。它正在获取有关 Elastic Beanstalk 资源的信息,但可以将其修改为使用 describe_instances 而不是 describe_environment_resources 以满足您的需求。