首页 > 解决方案 > AWS CloudFormation:如何处理手动删除的资源

问题描述

我是 AWS 的新手,所以有几个使用 CloudFormation 服务问题创建的 AWS VPC。

1.场景:我已经创建了yaml文件并在堆栈中执行了它。VPC、路由表和所有子网创建成功。现在我已经手动删除了一个子网(通过控制台)。现在我想要那个子网,所以我试图使用“当前模板”运行“更新”堆栈(尽管我没有在模板中进行任何修改)。它向我显示模板错误中没有修改。

问题一:如何在不修改的情况下通过模板栈安装被删除的资源。

2.场景:当我们创建VPC时,我们得到了默认路由表和NACL。

问题2:为什么我们不能通过cloudformation使用默认路由表和NACL。

问题3:是否有任何命令可以从其中获取cloudformation中的默认路由表和NACL ID。(例如:有一个命令我们可以将子网关联到路由表。类似的东西)。

提前致谢。

标签: amazon-web-servicesamazon-cloudformationamazon-vpcamazon-aclaws-route-table

解决方案


当云形态状态之外的东西发生变化时,这确实很棘手。与其他一些 IaC 工具不同,当资源偏离给定状态时,它不会“纠正”资源状态。

  1. 从模板中删除子网资源,使用删除的资源更新堆栈,重新添加子网并再次更新堆栈。
  2. 创建新的路由表和 NACL 并将它们与相应的子网关联实际上是最佳实践,因此实际上不需要修改默认资源。
  3. 您可以创建一个 cloudformation 自定义资源来查询 id 并将它们传递给其他资源。但是,由于回答 2,不建议这样做。问问自己:我想在这里实现什么?真的有必要吗?

推荐阅读