我手动删除了由我的一个 AWS CloudFormation 堆栈创建的资源,现在我的堆栈无法更新。
简短描述
如果删除由 CloudFormation 堆栈创建的资源,您的堆栈将无法更新,并且会收到一条错误消息。
请根据资源类型选择以下解决方法之一:
解决方法
使用唯一名称更新资源
如果删除的资源支持唯一名称,则可以通过手动创建资源来更新堆栈。但是,新资源必须与删除的资源具有相同名称。例如,当更改资源名称时,您会影响 CloudFormation 处理资源的方式。这是因为 AWS Identity and Access Management(IAM)角色按名称进行跟踪。如果意外删除了 IAM 角色,则可以使用同一个名称手动重新创建该角色。
要使用唯一名称更新 IAM 角色或任何其他资源,请完成以下步骤:
- 打开 AWS CloudFormation 控制台。
- 选择堆栈,然后选择资源视图。
- 在物理 ID 列中,找到要替换为新 IAM 角色的 IAM 角色的物理 ID。
**注意:**物理 ID 是资源的名称。
- 创建新 IAM 角色,然后为新角色提供在步骤 3 中找到的同一个物理 ID。
- 更新堆栈。
**注意:**有关更多信息,请参阅修改堆栈模板。
使用唯一 ID 更新资源
您无法使用唯一 ID 手动重新创建资源,如路由表。而是必须从 CloudFormation 模板中删除资源以及对该资源的所有引用。
**注意:**以下解决方法也适用于不支持唯一名称或唯一 ID 的资源。例如,在托管区中设置的记录。
要允许 CloudFormation 使用唯一 ID 重新创建路由表或任何其他资源,请完成以下步骤:
- 在 CloudFormation 模板中,删除路由表及其所有引用。
- 更新堆栈。
**注意:**CloudFormation 会尝试删除路由表。由于资源已被删除,因此 CloudFormation 会将删除视为成功操作。
- 将路由表以及所需的任何其他资源或引用添加回 CloudFormation 模板。
- 再次更新堆栈。
**注意:**CloudFormation 会重新创建已删除的资源。
相关信息
AWS CloudFormation 疑难解答