我的 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 仍在删除旧资源的过程中,或者由于依赖关系问题无法删除这些资源。
- 资源清理处于暂停状态,因为嵌套堆栈的同级堆栈无法更新或回滚。
解决方法
检查堆栈的状态
- 打开 CloudFormation 控制台。
- 在导航窗格中,选择 Stacks(堆栈)。
- 选择停滞在 UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS 或 UPDATE_COMPLETE_CLEANUP_IN_PROGRESS 状态的堆栈。
- 检查您的堆栈名称旁边是否有嵌套标签。
- 选择堆栈的 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::DBInstance 和 AWS::CloudFront::Distribution 等资源需要更长的时间才能被删除。
- 其他资源依赖于您的资源。例如,CloudFormation 堆栈之外的其他资源可以使用 Amazon Elastic Compute Cloud (Amazon EC2) 安全组。使用 AWS 管理控制台检查是否没有为资源手动创建依赖关系。
**注意:**在跳过资源并继续清理过程之前,CloudFormation 会尝试删除资源三次。
如果您的堆栈没有处于 DELETE_IN_PROGRESS 状态的资源,请完成以下步骤:
- 打开 CloudFormation 控制台。
- 在导航窗格中,选择 Stacks(堆栈),然后选择您的堆栈。
- 在堆栈的概述选项卡中,在根堆栈部分中选择堆栈。
- 在状态部分中检查根堆栈的状态。
如果根堆栈处于 UPDATE_IN_PROGRESS 或 UPDATE_ROLLBACK_IN_PROGRESS 状态,则表示依赖于该堆栈的其他资源仍在更新中。在更新所有相关资源(包括嵌套堆栈中的资源)之后,CloudFormation 将开始清理过程。
如果根堆栈处于 UPDATE_ROLLBACK_FAILED 状态,请确定在堆栈进入 UPDATE_ROLLBACK_IN_PROGRESS 状态后无法回滚的第一个资源。要确定此资源,请在 CloudFormation 控制台中选中根堆栈的 Events(事件)选项卡。
如果无法回滚的资源不是嵌套堆栈,请完成如何更新停滞在 UPDATE_ROLLBACK_FAILED 状态的 CloudFormation 堆栈?中的步骤
如果无法回滚的资源是嵌套堆栈,请完成以下步骤:
- 请确定在嵌套的堆栈进入 UPDATE_ROLLBACK_IN_PROGRESS 状态后无法回滚的第一个资源。要确定此资源,请在 CloudFormation 控制台中选中嵌套的堆栈的 Events(事件)选项卡。如果资源仍是嵌套堆栈,则对嵌套堆栈重复此步骤,直到确定无法回滚的资源不是嵌套堆栈为止。
- 继续回滚过程以使堆栈进入稳定状态。
**重要提示:**如果您在 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 服务运行状况控制面板来查找操作问题。
相关信息
使用嵌套堆栈
更新回滚失败