我想删除 AWS CloudFormation 堆栈,但是此堆栈卡滞在 DELETE_FAILED 状态。
简短描述
您的堆栈可能由于以下原因之一而卡滞在 DELETE_FAILED 状态:
- 堆栈资源包含依赖对象或其他无法删除的依赖项。
- 您使用的服务角色无效,或者您无法代入 AWS Identity and Access Management (IAM) 角色。
- 自定义资源在默认响应超时内无法稳定。
解决方法
**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI。
删除具有无法删除依赖项的堆栈
进行带外更改时可能会发生依赖项问题。例如,您的堆栈有一个安全组,该安全组连接到不属于您的堆栈的弹性网络接口。您无法删除堆栈,因为您无法删除安全组。要删除堆栈但保留具有依赖项的资源,请使用 CloudFormation 控制台强制删除堆栈。或者,运行以下 AWS CLI 命令。
要删除卡滞在 DELETE_FAILED 状态的堆栈并保留未删除的资源,请运行以下 delete-stack 命令:
aws cloudformation delete-stack --stack-name my-stack --retain-resources myresource1 myresource2
**注意:**将 my-stack 替换为您的堆栈名称,将 myresource1 和 myresource2 替换为未删除的资源的 ID。
CloudFormation 会删除堆栈,但不会删除您保留的资源。堆栈的状态将更改为 DELETE_COMPLETE。
**注意:**为避免保留的资源产生费用,请在删除堆栈后手动删除保留的资源。
要强制删除具有无法删除依赖项的堆栈,请运行以下 delete-stack 命令:
aws cloudformation delete-stack --stack-name my-stack --deletion-mode FORCE_DELETE_STACK
**注意:**请将 my-stack 替换为您的堆栈的名称。
删除角色无效的堆栈
如果您尝试删除使用已不存在的服务角色的堆栈,则会收到以下错误:
"An error occurred (ValidationError) when calling the DeleteStack operation: Role is invalid or cannot be assumed."
要解决此问题,请完成以下步骤:
- 打开 CloudFormation 控制台。
- 选择要删除的堆栈。
- 在 Stack info(堆栈信息)选项卡中,记下堆栈的 IAM 角色的名称。
- 创建与上一步中的 IAM 角色同名的 IAM 角色。**重要事项:**创建 IAM 角色时,请验证该角色是否具有删除堆栈中资源的权限。
- 使用 CloudFormation 控制台删除堆栈。
如果您不记得已删除角色的权限,则无法创建具有相同权限的新角色来删除堆栈。获取一个新角色,然后使用新角色运行以下 ** delete-stack ** 命令来删除堆栈:
aws cloudformation delete-stack --stack-name my-stack --role-arn new_role
**注意:**将 my-stack 替换为您的堆栈名称,将 new_role 替换为新角色的 Amazon 资源编号 (ARN)。
删除无法稳定的自定义资源的堆栈
要对此问题进行故障排除,请参阅如何删除 CloudFormation 中卡在 DELETE_FAILED 状态或 DELETE_IN_PROGRESS 状态的 Lambda 支持的自定义资源?
相关信息
DeleteStack