为什么我的 CloudFormation 堆栈卡在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态?

1 分钟阅读
0

我的 AWS CloudFormation 堆栈卡在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态。我想让堆栈进入 UPDATE_ROLLBACK_COMPLETE 或 UPDATE_COMPLETE 状态。

简短描述

CloudFormation 堆栈由于以下原因而卡在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESSUPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态:

  • CloudFormation 仍在删除旧资源,或者由于依赖关系问题而无法删除这些资源。
  • CloudFormation 暂停了资源清理,因为嵌套堆栈的同级堆栈无法更新或回滚。

解决方法

检查堆栈的状态

完成以下步骤:

  1. 打开 CloudFormation 控制台
  2. 在导航窗格中,选择 Stacks(堆栈)。
  3. 选择处于卡住状态的堆栈。
  4. 检查堆栈名称旁边是否有 NESTED 标签。
  5. 在堆栈的 Events(事件)选项卡下,检查是否有资源处于 DELETE_IN_PROGRESS 状态。如果状态未更改为 DELETE_COMPLETE,则您必须检查该资源。

嵌套堆栈资源处于 DELETE_IN_PROGRESS 状态

嵌套堆栈中的资源可能由于以下原因而卡在 DELETE_IN_PROGRESS 状态:

  • 某些资源(例如 AWS::RDS::DBInstanceAWS::CloudFront::Distribution),需要 CloudFormation 花费更多时间才能删除。
  • 其他资源依赖于您的资源。例如,您的 CloudFormation 堆栈外的资源可能会使用您的 Amazon Elastic Compute Cloud (Amazon EC2) 安全组。检查是否没有为资源手动创建依赖关系。

**注意:**CloudFormation 会尝试三次来删除某个资源,如果失败,CloudFormation 会跳过该资源并继续执行清理过程。

嵌套堆栈资源不处于 DELETE_IN_PROGRESS 状态

如果您的嵌套堆栈没有处于 DELETE_IN_PROGRESS 状态的资源,请检查您的根堆栈。

完成以下步骤:

  1. 打开 CloudFormation 控制台
  2. 在导航窗格中,选择 Stacks(堆栈),然后选择您的堆栈。
  3. 在堆栈的 Overview(概览)选项卡中,在 Root stack(根堆栈)部分中选择该堆栈。
  4. Status(状态)部分中,检查根堆栈的状态。

如果根堆栈处于 UPDATE_IN_PROGRESSUPDATE_ROLLBACK_IN_PROGRESS 状态,则表明 CloudFormation 正在更新依赖于您的堆栈的其他资源。在 CloudFormation 更新所有依赖资源(包括嵌套堆栈中的资源)后,CloudFormation 将开始清理过程。

如果根堆栈处于 UPDATE_ROLLBACK_FAILED 状态,请确定回滚失败的第一个资源。在 CloudFormation 控制台上查看根堆栈的 Events(事件)选项卡。如果回滚失败的资源不是嵌套堆栈,请参阅如果 CloudFormation 堆栈停留在 UPDATE_ROLLBACK_FAILED 状态,怎样才能让它更新?

回滚失败的资源是嵌套堆栈

如果回滚失败的资源是嵌套堆栈,请完成以下步骤:

  1. 确定嵌套堆栈进入 UPDATE_ROLLBACK_IN_PROGRESS 状态后第一个回滚失败的资源。在 CloudFormation 控制台上查看嵌套堆栈的 Events(事件)选项卡。如果资源是嵌套堆栈,请重复此过程,直到找到回滚失败的非嵌套堆栈资源。
  2. 继续回滚过程,让堆栈进入稳定状态。

**重要事项:**如果您在 ContinueUpdateRollback 操作期间跳过某个资源,CloudFormation 会将指定资源的状态设置为 UPDATE_COMPLETE。然后,CloudFormation 将继续回滚堆栈。回滚完成后,所跳过资源的状态与堆栈模板中资源的状态会不一致。在再次更新堆栈之前,更新资源,让资源彼此保持一致。否则,后续堆栈更新可能会失败,堆栈可能会无法恢复。

非嵌套堆栈资源处于 DELETE_IN_PROGRESS 状态

如果堆栈中的资源处于 DELETE_IN_PROGRESS 状态,请使用 CloudFormation 控制台来检查资源状态。或者,查看 AWS CloudTrail 日志来了解资源的状态。如果资源未更改为 DELETE_COMPLETE,请使用 AWS Health Dashboard 来查找操作问题。

相关信息

为什么我的 CloudFormation 堆栈停滞在 IN_PROGRESS 状态?

使用嵌套堆栈将堆栈嵌入其他堆栈

更新回滚失败

AWS 官方
AWS 官方已更新 2 个月前