CloudFormation 堆栈停滞在 UPDATE_ROLLBACK_FAILED 状态时如何对其进行更新?

上次更新日期:2021 年 3 月 12 日

我的 AWS CloudFormation 堆栈停滞在 UPDATE_ROLLBACK_FAILED 状态。

简短描述

如果您的堆栈在更新失败之后停滞在 UPDATE_ROLLBACK_FAILED 状态,则您只能在堆栈上执行 ContinueUpdateRollbackDeleteStack 操作。这是因为 CloudFormation 需要您提供进一步的输入,以确认堆栈不与其尝试回滚到的模板同步。要重试回滚并解决错误,您可以使用 ContinueUpdateRollback

提示:要解决此错误,您可能需要提高限制,更改权限或修改其他设置。有关导致更新回滚失败的常见错误的信息,请参阅更新回滚失败

在某些情况下,重试回滚操作不会解决该错误。在这些情况下,您必须跳过资源,并且还要确认这些资源不再反映 CloudFormation 模板中的所需状态。要跳过导致回滚失败的资源,请完成解决方法部分中的以下步骤。

解决方法

您可以使用 CloudFormation 控制台或 AWS 命令行界面 (AWS CLI) 将堆栈回滚到某个工作状态。

注意:如果在运行 AWS CLI 命令时收到错误,请确保您使用的是最新的 AWS CLI 版本

CloudFormation 控制台

1.    打开 CloudFormation 控制台

2.    在导航窗格中,选择堆栈

3.    在 Stack name(堆栈名称)列中,选择停滞在 UPDATE_ROLLBACK_FAILED 状态的堆栈。

4.    如果您不想跳过资源,请依次选择 Stack Actions(堆栈操作)和 Continue update rollback(继续更新回滚)。

-或者-

如果要在回滚期间跳过 FAILED 资源,请完成以下操作:

1.    在 Stack name(堆栈名称)列中,选择停滞在 UPDATE_ROLLBACK_FAILED 状态的堆栈。

2.    选择 Stack Actions(堆栈操作),然后选择 Continue update rollback(继续更新回滚)。

3.    在 Continue update rollback(继续更新回滚)对话框中,展开 Advanced troubleshooting(高级故障排除)。

4.    在 Resources to skip - optional(跳过的资源 - 可选)部分中,选择您要跳过的资源。

5.    选择 Continue update rollback(继续更新回滚)。

AWS CLI

在 AWS CLI 中,运行 continue-update-rollback 命令。例如:

$ aws cloudformation continue-update-rollback --stack-name awsstackname123 --resources-to-skip awsfaultyresource123

注意:awsstackname123 替换为您的堆栈名称。将 awsfaultyresource123 替换为您的资源的逻辑 ID。

重要提示:CloudFormation 会将指定资源的状态设置为 UPDATE_COMPLETE。然后,CloudFormation 将继续回滚堆栈。回滚完成后,跳过的资源的状态将与堆栈模板中资源的状态不一致。在执行另一个堆栈更新之前,请更新堆栈或资源以使其互相保持一致。如果没有这样做,后续堆栈更新可能失败,并且堆栈将无法恢复。

如果您的嵌套堆栈必须回滚到某个工作状态,请参阅使用 ResourcesToSkip 恢复嵌套的堆栈层次结构


这篇文章对您有帮助吗?


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