如何更新因我手动删除了某个资源而更新失败的 AWS CloudFormation 堆栈?

上次更新时间:2020 年 3 月 18 日

我手动删除了由某个 AWS CloudFormation 堆栈创建的资源,现在我的堆栈无法更新。如何更新该堆栈?

简短描述

如果您删除某个 AWS CloudFormation 堆栈的某个资源,则您必须从 AWS CloudFormation 模板中删除该资源。否则,您的堆栈无法将完成更新,并且您将收到一条错误消息。

解决方法

手动更新您创建的资源

您可以用新资源替换被您删除的手动创建的资源,从而完成堆栈更新。但此新资源的名称必须与已删除的资源相同。

例如,由于 AWS Identity and Access Management (IAM) 角色是按名称跟踪的,因此更改资源的名称可能会影响角色的处理方式。如果您意外删除了某个 IAM 角色,则可以使用相同的名称手动重新创建该角色。

要更新您手动创建的 IAM 角色或其他资源,请完成以下步骤:

  1. 打开 AWS CloudFormation 控制台
  2. 选择您的堆栈,然后选择资源视图。
  3. 物理 ID 列中,找到您要使用新创建的 IAM 角色替换的 IAM 角色的物理 ID。
    注意:物理 ID 是资源的名称。
  4. 创建一个新的 IAM 角色,然后将该新角色的物理 ID 设置为您在第 3 步中找到的物理 ID。
  5. 更新堆栈

注意:有关更多信息,请参阅修改堆栈模板

更新一个具有唯一 ID 的资源

您无法手动重新创建具有唯一 ID 的资源(例如路由表)。您必须从 AWS CloudFormation 模板中移除该资源以及对该资源的任何引用。

要允许 AWS CloudFormation 重新创建具有唯一 ID 的路由表或其他资源,请完成以下步骤:

  1. 在 AWS CloudFormation 模板中移除该路由表以及对该路由表的任何引用。
  2. 更新不包含该路由表的堆栈
  3. 重新向您的 AWS CloudFormation 模板添加将该路由表以及您需要的任何其他资源或引用。
    注意:AWS CloudFormation 将重新创建已删除的资源。
  4. 再次更新堆栈。

这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?