我的 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. 在导航窗格中,选择 Stacks(堆栈)。
  3. 选择停滞在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态的堆栈。
  4. 检查您的堆栈名称旁边是否有嵌套标签。
  5. 选择堆栈的 Resources(资源)选项卡,然后检查是否存在处于 DELETE_IN_PROGRESS 状态的资源。
    **注意:**Status(状态)列显示了资源状态。

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

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

排查嵌套堆栈的问题

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

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

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

**注意:**在跳过资源并继续清理过程之前,CloudFormation 会尝试删除资源三次。

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

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

如果根堆栈处于 UPDATE_IN_PROGRESS 或 UPDATE_ROLLBACK_IN_PROGRESS 状态,则表示依赖于该堆栈的其他资源仍在更新中。在更新所有相关资源(包括嵌套堆栈中的资源)之后,CloudFormation 将开始清理过程。

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

如果无法回滚的资源不是嵌套堆栈,请完成如何更新停滞在 UPDATE_ROLLBACK_FAILED 状态的 CloudFormation 堆栈?中的步骤

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

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

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

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

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

**注意:**Status(状态)列显示了资源状态。

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


相关信息

使用嵌套堆栈

更新回滚失败

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