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

1 分钟阅读
0

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

简短描述

您的堆栈可能由于以下原因而停留在 DELETE_FAILED 状态:

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

解决方法

删除具有依赖对象或其他无法删除的依赖项的堆栈

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

要在保留资源的同时删除堆栈,请完成下面的步骤:

AWS CloudFormation 控制台

  1. 打开 AWS CloudFormation 控制台
  2. 选择停留在 DELETE_FAILED 状态的堆栈。
  3. 选择删除
    **注意:**将打开一个窗口,列出了未能删除的资源。
  4. 在窗口中,选择要保留的所有资源,然后选择删除堆栈

AWS 命令行界面

**注意:**如果在运行 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.”

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

  1. 打开 AWS CloudFormation 控制台
  2. 选择要删除的堆栈,查看其详细信息。
  3. 堆栈信息选项卡中,记下分配给堆栈的 IAM 角色的名称。
  4. 使用步骤 3 中 IAM 角色的名称创建 AWS Identity and Access Management(IAM)角色
    **重要事项:**创建 IAM 角色时,请验证该角色是否具有删除堆栈中资源的对应权限
  5. 在 AWS CloudFormation 控制台中,重新尝试删除堆栈。

删除无法稳定的自定义资源的堆栈

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


AWS 官方
AWS 官方已更新 2 年前