为什么我的 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_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态:

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

解决方法

检查堆栈的状态

  1. 打开 CloudFormation 控制台
  2. 在导航窗格中,选择堆栈
  3. 选择卡在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态的堆栈。
  4. 检查您的堆栈名称旁边是否有嵌套标签。
  5. 为堆栈选择资源选项卡,然后检查是否有任何资源处于 DELETE_IN_PROGRESS 状态。
    注意:****状态列显示资源状态。

如果您的堆栈名称旁边有嵌套标签,请完成对嵌套堆栈进行故障排除部分中的步骤。

如果您的堆栈名称旁边没有这个标签,请完成对非嵌套堆栈进行故障排除部分中的步骤。

对嵌套堆栈进行故障排除

如果您的堆栈有一个或多个资源处于 DELETE_IN_PROGRESS 状态,请检查该资源的状态。或者,按照为什么我的 CloudFormation 堆栈停滞在 CREATE_IN_PROGRESS, UPDATE_IN_PROGRESS, UPDATE_ROLLBACK_IN_PROGRESS, or DELETE_IN_PROGRESS 状态?中的查看 AWS CloudTrail 日志部分中的步骤进行操作。

由于以下原因,您的资源可能停留在 DELETE_IN_PROGRESS 状态:

  • 该资源需要更多时间才能删除。例如,AWS::RDS::DBInstanceAWS::CloudFront::Distribution 等资源的删除时间比其他资源长。
  • 其他资源取决于您的资源。例如,Amazon Elastic Compute Cloud(Amazon EC2)安全组可以由您的 CloudFormation 堆栈之外的其他资源使用。使用 AWS 管理控制台检查没有为资源手动创建依赖关系。

**注意:**CloudFormation 会三次尝试删除资源,然后跳过该资源继续清理过程。

如果您的堆栈没有处于 DELETE_IN_PROGRESS 状态的资源,请完成以下步骤:

  1. 打开 CloudFormation 控制台
  2. 在导航窗格中,选择堆栈,然后选择您的堆栈。
  3. 在堆栈的概述选项卡中,在根堆栈部分选择堆栈。
  4. 状态部分检查根堆栈的状态。

如果根堆栈处于 UPDATE_IN_PROGRESS 或 UPDATE_ROLLBACK_IN_PROGRESS 状态,则依赖于您的堆栈的其他资源仍在更新中。所有依赖资源(包括嵌套堆栈中的资源)完成更新后,CloudFormation 将启动清理过程。

如果根堆栈处于 UPDATE_ROLLBACK_FAILED 状态,请确定堆栈进入 UPDATE_ROLLBACK_IN_PROGRESS 状态后第一个无法回滚的资源。要识别此资源,请在 CloudFormation 控制台中查看根堆栈的事件选项卡。

如果回滚失败的资源不是嵌套堆栈,请完成 CloudFormation 堆栈停滞在 UPDATE_ROLLBACK_FAILED 状态时如何对其进行更新?中的步骤。

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

  1. 确定嵌套堆栈进入 UPDATE_ROLLBACK_IN_PROGRESS 状态后第一个无法回滚的资源。要识别此资源,请在 CloudFormation 控制台中查看嵌套堆栈的事件选项卡。如果这个资源仍然是一个嵌套堆栈,则对这个嵌套堆栈重复此步骤,直到您确定回滚失败的资源不是嵌套堆栈。
  2. 继续回滚过程以使堆栈进入稳定状态。

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

对非嵌套堆栈进行故障排除

如果您的堆栈有一个或多个资源处于 DELETE_IN_PROGRESS 状态,则使用 AWS 管理控制台检查资源的状态。或者,按照为什么我的 CloudFormation 堆栈停滞在 CREATE_IN_PROGRESS, UPDATE_IN_PROGRESS, UPDATE_ROLLBACK_IN_PROGRESS, or DELETE_IN_PROGRESS 状态?中的查看 AWS CloudTrail 日志部分中的步骤进行操作。

注意:****状态列显示资源状态。

如果没有任何资源处于 DELETE_IN_PROGRESS 状态,则使用适用于 CloudFormation 的 AWS 服务运行状况控制面板查找操作问题。


相关信息

使用嵌套堆栈

更新回滚失败

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