如何更新由于我手动删除了资源而出现故障的 CloudFormation 堆栈?

上次更新时间:2021 年 8 月 23 日

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

简短描述

如果删除由 CloudFormation 堆栈创建的资源,那么您的堆栈将无法更新,而且您会收到错误消息。

请根据您的资源类型从下列解决方法中选择一种:

  • 更新使用唯一名称的资源
  • 更新使用唯一 ID 的资源

解决方法

更新使用唯一名称的资源

如果已删除的资源支持唯一名称,则可以通过手动创建资源来更新堆栈。但是,新资源必须与已删除资源具有相同的名称。例如,在更改资源名称时,您可能会影响 CloudFormation 处理资源的方式。这是因为系统会按名称跟踪 AWS Identity and Access Management (IAM) 角色。如果您不小心删除了 IAM 角色,则可以手动重新创建具有相同名称的角色。

要更新使用唯一名称的 IAM 角色或任何其他资源,请完成以下步骤:

  1. 打开 AWS CloudFormation 控制台
  2. 选择您的堆栈,然后选择 Resources (资源) 视图。
  3. Physical ID (物理 ID) 列中,找到您要使用新 IAM 角色替换的 IAM 角色的物理 ID。
    注意:物理 ID 是资源的名称。
  4. 创建新的 IAM 角色,然后为新角色指定与在第 3 步中找到的物理 ID 相同的物理 ID。
  5. 更新堆栈

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

更新使用唯一 ID 的资源

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

注意:以下解决方案也适用于不支持唯一名称或唯一 ID 的资源。例如,托管区域中的记录集。

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

  1. 在 CloudFormation 模板中,删除路由表以及对路由表的任何引用。
  2. 更新堆栈
    注意:CloudFormation 会尝试删除路由表。由于资源已被删除,CloudFormation 会认为删除操作成功。
  3. 将路由表以及您需要的其他任何资源或引用添加回 CloudFormation 模板。
  4. 再次更新您的堆栈。
    注意:CloudFormation 会重新创建已删除的资源。

这篇文章对您有帮助吗?


您是否需要账单或技术支持?