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

上次更新日期:2022 年 4 月 5 日

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

简短描述

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

  • 堆栈资源包含依赖对象或其他无法删除的依赖项。要解决此问题,请完成删除包含依赖对象或其他无法删除的依赖项的堆栈部分中的步骤。
  • 正在使用的服务角色无效或无法担任。要解决此问题,请完成 Delete a stack with a invalid role (删除包含无效角色的堆栈)部分中的步骤。
  • 自定义资源未能在预期时间内达到稳定。要解决此问题,请完成删除无法稳定的自定义资源的堆栈部分中的步骤。

解决方法

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

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

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

AWS CloudFormation 控制台

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

AWS Command Line Interface

注意:如果您在运行 AWS CLI 命令时遇到错误,请确保使用的是最新版本的 AWS CLI

运行以下 delete-stack 命令:

$ aws cloudformation delete-stack --stack-name my-stack --retain-resources myresource1 myresource2

注意:请将 my-stack 替换为堆栈的名称。请将 myresource1myresource2 替换为无法删除的资源的逻辑 ID。

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

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

删除具有无效角色的堆栈

如果您尝试删除使用当前不存在的服务角色创建的堆栈,则您会收到以下错误信息:“An error occurred (ValidationError) when calling the DeleteStack operation: Role is invalid or cannot be assumed.” (调用 DeleteStack 操作时发生错误 (ValidationErro): 角色无效或无法担任。)

如要解决此错误,请执行如下操作:

  1. 打开 AWS CloudFormation 控制台
  2. 选择想要删除以查看其详细信息的堆栈。
  3. Stack info(堆栈信息)选项卡中,记下分配至堆栈的 IAM 角色的名称。
  4. 使用与步骤 3 中相同的 IAM 角色创建一个 AWS Identity and Access Management (IAM) 角色
    重要提示:当您创建 IAM 角色时,请验证它是否具有用于删除堆栈中资源的正确权限
  5. 在 AWS CloudFormation 控制台中,请重新尝试删除堆栈。

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


这篇文章对您有帮助吗?


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