我的 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 暂停了资源清理,因为嵌套堆栈的同级堆栈无法更新或回滚。
解决方法
检查堆栈的状态
完成以下步骤:
- 打开 CloudFormation 控制台。
- 在导航窗格中,选择 Stacks(堆栈)。
- 选择处于卡住状态的堆栈。
- 检查堆栈名称旁边是否有 NESTED 标签。
- 在堆栈的 Events(事件)选项卡下,检查是否有资源处于 DELETE_IN_PROGRESS 状态。如果状态未更改为 DELETE_COMPLETE,则您必须检查该资源。
嵌套堆栈资源处于 DELETE_IN_PROGRESS 状态
嵌套堆栈中的资源可能由于以下原因而卡在 DELETE_IN_PROGRESS 状态:
- 某些资源(例如 AWS::RDS::DBInstance 和 AWS::CloudFront::Distribution),需要 CloudFormation 花费更多时间才能删除。
- 其他资源依赖于您的资源。例如,您的 CloudFormation 堆栈外的资源可能会使用您的 Amazon Elastic Compute Cloud (Amazon EC2) 安全组。检查是否没有为资源手动创建依赖关系。
**注意:**CloudFormation 会尝试三次来删除某个资源,如果失败,CloudFormation 会跳过该资源并继续执行清理过程。
嵌套堆栈资源不处于 DELETE_IN_PROGRESS 状态
如果您的嵌套堆栈没有处于 DELETE_IN_PROGRESS 状态的资源,请检查您的根堆栈。
完成以下步骤:
- 打开 CloudFormation 控制台。
- 在导航窗格中,选择 Stacks(堆栈),然后选择您的堆栈。
- 在堆栈的 Overview(概览)选项卡中,在 Root stack(根堆栈)部分中选择该堆栈。
- 在 Status(状态)部分中,检查根堆栈的状态。
如果根堆栈处于 UPDATE_IN_PROGRESS 或 UPDATE_ROLLBACK_IN_PROGRESS 状态,则表明 CloudFormation 正在更新依赖于您的堆栈的其他资源。在 CloudFormation 更新所有依赖资源(包括嵌套堆栈中的资源)后,CloudFormation 将开始清理过程。
如果根堆栈处于 UPDATE_ROLLBACK_FAILED 状态,请确定回滚失败的第一个资源。在 CloudFormation 控制台上查看根堆栈的 Events(事件)选项卡。如果回滚失败的资源不是嵌套堆栈,请参阅如果 CloudFormation 堆栈停留在 UPDATE_ROLLBACK_FAILED 状态,怎样才能让它更新?
回滚失败的资源是嵌套堆栈
如果回滚失败的资源是嵌套堆栈,请完成以下步骤:
- 确定嵌套堆栈进入 UPDATE_ROLLBACK_IN_PROGRESS 状态后第一个回滚失败的资源。在 CloudFormation 控制台上查看嵌套堆栈的 Events(事件)选项卡。如果资源是嵌套堆栈,请重复此过程,直到找到回滚失败的非嵌套堆栈资源。
- 继续回滚过程,让堆栈进入稳定状态。
**重要事项:**如果您在 ContinueUpdateRollback 操作期间跳过某个资源,CloudFormation 会将指定资源的状态设置为 UPDATE_COMPLETE。然后,CloudFormation 将继续回滚堆栈。回滚完成后,所跳过资源的状态与堆栈模板中资源的状态会不一致。在再次更新堆栈之前,更新资源,让资源彼此保持一致。否则,后续堆栈更新可能会失败,堆栈可能会无法恢复。
非嵌套堆栈资源处于 DELETE_IN_PROGRESS 状态
如果堆栈中的资源处于 DELETE_IN_PROGRESS 状态,请使用 CloudFormation 控制台来检查资源状态。或者,查看 AWS CloudTrail 日志来了解资源的状态。如果资源未更改为 DELETE_COMPLETE,请使用 AWS Health Dashboard 来查找操作问题。
相关信息
为什么我的 CloudFormation 堆栈停滞在 IN_PROGRESS 状态?
使用嵌套堆栈将堆栈嵌入其他堆栈
更新回滚失败