如何更新停滞在 UPDATE_ROLLBACK_FAILED 状态的 AWS CloudFormation 堆栈?

上次更新时间:2020 年 7 月 8 日

我的 AWS CloudFormation 堆栈停滞在 UPDATE_ROLLBACK_FAILED 状态。如何更新该堆栈?

简短描述

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

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

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

解决方法

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

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

AWS CloudFormation 控制台

1.    打开 AWS CloudFormation 控制台

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

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

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

-或者-

如果您要跳过资源,请完成以下操作:

1.    如果您不想跳过资源,请选择操作

2.    在继续 [yourStackName] 的更新回滚对话框中,展开高级故障排除

3.    在跳过的资源 - 可选部分中,选择您要跳过的资源。

4.    选择 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。

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

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


这篇文章对您有帮助吗?


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