我的 AWS CloudFormation 堆栈为什么停滞在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态?

上次更新时间:2020 年 11 月 6 日

我想知道我的 AWS CloudFormation 堆栈为什么停滞在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态。我想让堆栈进入 UPDATE_ROLLBACK_COMPLETE 或 UPDATE_COMPLETE 状态。

简短描述

AWS CloudFormation 堆栈在以下情况下会停滞在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态:

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

解决方法

检查堆栈的状态

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

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

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

对嵌套堆栈进行故障排除

如果您的堆栈有一个或多个处于 DELETE_IN_PROGRESS 状态的资源,请使用 AWS 管理控制台检查资源的状态。或者,请按照我的 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 等资源需要更长的时间才能被删除。
  • 其他资源依赖于您的资源。例如,AWS CloudFormation 堆栈之外的其他资源可以使用 Amazon Elastic Compute Cloud (Amazon EC2) 安全组。使用 AWS 管理控制台检查是否没有为资源手动创建依赖关系。

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

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

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

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

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

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

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

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

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

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

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

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

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


这篇文章对您有帮助吗?


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