将现有的AWS资源整合到Cloudformation堆栈中

Bri*_*anP 19 amazon-web-services aws-cloudformation

有没有办法将在cloudformation之外创建的现有AWS资源合并到现有cloudformation堆栈中?我想这样做,而不必在cloudformation堆栈中添加新资源并将现有资源的数据迁移到该新资源上。我看到AWS现在具有针对云形成堆栈的漂移检测。我想知道是否可以利用它来将现有资源合并到堆栈中。

小智 12

将资源导入/采用资源到现有CloudFormation堆栈中的能力是CloudFormation客户的第一要问。我们已经思考了一段时间了,但是还没有找到既能满足客户需求又能在服务运营规模上发挥作用的机制。

由于我们不会在服务之外的任何地方公开堆栈状态信息供您修改,因此,在我们提供采用功能之前,您可以采取的唯一方法是将有关资源的元数据存储在参数存储中,或者将自定义资源用作包装器以检索有关基础资源的信息,然后通过Fn :: GetAtt将其显示到堆栈中。


gva*_*uez 5

现在,您终于可以使用“资源导入”功能来做到这一点,参考:

https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md

https://twitter.com/shortjared/status/1193985448164691970?s=21

  • 你能提供一个简单的例子吗?我已经尝试通过 AWS 控制台上的 CloudFormation 进行操作,但看起来您仍然需要导入模板或提供 s3 url。 (3认同)

bwe*_*est 3

您可以通过参数将现有资源信息传递到堆栈来完成此操作。下面是如何将这些参数传递到堆栈的示例。

查看Eric Hammond 的这篇博客文章,描述如何将这些参数合并到堆栈的其余部分中。所描述的用例有点不同,因为如果未传入它们,它们可以选择创建新资源,但整体结构适用于您所描述的情况。

在这种情况下,我认为漂移检测不会帮助您,因为它会显示部署的资源与堆栈中描述的配置之间的差异。不会检查堆栈外部定义/创建的资源。

  • 对,那是正确的。我理解你的问题意味着你想引用现有资源但不在堆栈中定义它们。据我所知,没有办法将现有资源的配置委托给 cloudformation 而不重建它。 (2认同)