如何删除卡在 DELETE_FAILED 状态的 AWS CloudFormation 堆栈?

上次更新时间:2020 年 9 月 23 日

我想删除我的 AWS CloudFormation 堆栈,但我的堆栈卡在 DELETE_FAILED 状态。

简短描述

您的堆栈可能会因以下原因而卡在 DELETE_FAILED 状态:

堆栈资源包含依赖对象或其他无法删除的依赖项。要解决此问题,请完成删除包含依赖对象或其他无法删除的依赖项的堆栈部分中的步骤。 Delete 请求中包含的安全令牌无效,或者角色无效或无法担任。要解决此问题,请完成删除包含无效安全令牌或无效角色的堆栈部分中的步骤。 自定义资源未能在预期时间内实现稳定。要解决此问题,请完成删除无法稳定的自定义资源的堆栈部分中的步骤。 解决方法

删除包含依赖对象或其他无法删除的依赖项的堆栈

在进行带外更改时通常会发生依赖关系问题。例如,如果属于堆栈的安全组连接到不属于堆栈的弹性网络接口,则堆栈将会出现故障。堆栈出现故障是因为无法删除安全组资源。要删除堆栈,您必须保留该依赖资源。

要删除堆栈,同时保留某个资源,请完成以下步骤:

    打开 AWS CloudFormation 控制台。 选择卡在 DELETE_FAILED 状态的堆栈。 选择 Delete(删除)。
    注意:将打开一个弹出窗口并列出无法删除的资源。 在窗口中,选择您想要保留的所有资源,然后选择删除堆栈

AWS CloudFormation 堆栈尝试再次删除堆栈,但无法删除您选择保留的任何资源。堆栈的状态应更改为 DELETE_COMPLETE。

重要提示:为避免产生不必要的费用,您必须手动删除堆栈删除后保留的资源。

删除包含无效安全令牌或无效角色的堆栈

如果您尝试删除使用不存在的服务角色创建的堆栈,则您会收到以下错误信息:“调用 DeleteStack 操作时发生错误 (ValidationErro):角色 <arn> 无效或无法承担。”

要解决此错误,请完成以下步骤:

    打开 AWS CloudFormation 控制台。 要查看您的堆栈的详细信息,请选择卡在 DELETE_FAILED 状态的堆栈名称。 在堆栈信息选项卡中,记下分配至堆栈的 IAM 角色的名称。 使用与步骤 3 中相同的 IAM 角色创建一个 AWS Identity and Access Management (IAM) 角色。
    重要提示:当您创建 IAM 角色时,验证您的 IAM 角色是否具有用于删除堆栈的正确权限。 在 AWS CloudFormation 控制台中,删除卡在 DELETE_FAILED 状态的堆栈。

堆栈的状态会更改为 DELETE_COMPLETE。

删除未能稳定的自定义资源的堆栈

要删除未能在预期时间内稳定的自定义资源的堆栈,请参阅如何在 AWS CloudFormation 中对卡在 DELETE_FAILED 状态或 DELETE_IN_PROGRESS 状态的 AWS Lambda 支持的自定义资源进行故障排除?