如何解决 AWS Amplify 项目中的 CloudFormation 堆栈问题?

1 分钟阅读
0

当我尝试部署 AWS Amplify 应用程序时,我收到类似如下的 AWS CloudFormation 错误消息:“Resource is not in the state stackUpdateComplete”。我该如何解决此问题?

简短描述

要解决 Amplify 项目中的 CloudFormation 堆栈问题,请先查看 CloudFormation 控制台中的以下内容,确定导致问题的原因:

  • 后端堆栈的 Status code(状态代码)和 Status reason(状态原因)。
  • 后端堆栈近期 Events(事件)的 Status(状态)、Status reason(状态原因)和 Logical ID(逻辑 ID)值。
  • 后端堆栈 Resources(资源)的 Status(状态)、Status reason(状态原因)和 Logical ID(逻辑 ID)值。

**注意:**Status reason(状态原因)值包含 CloudFormation 返回的错误消息,用于确定导致错误的原因。

然后,根据控制台中列出的 Status(状态)、Status reason(状态原因)和 Logical ID(逻辑 ID)值修复问题。

解决方法

**注意:**Amplify 预置或更新的 CloudFormation 堆栈可能会出于许多原因返回错误。以下是 CloudFormation 堆栈返回 Amplify 项目相关错误的最常见原因:

在 CloudFormation 控制台中查看堆栈的状态代码和状态原因,确定导致问题的原因

1.    打开 Amplify 控制台

2.    选择 Backend environments(后端环境)选项卡。然后,选择应用程序的后端环境。

3.    选择 Overview(概览)选项卡。然后,选择 View in CloudFormation(在 CloudFormation 中查看)。后端环境的关联 CloudFormation 堆栈的 Stack info(堆栈信息)页面会在 CloudFormation 控制台中打开。

4.    在 Overview(概览)窗格中,查看 Status(状态)和 Status reason(状态原因)值。这是后端堆栈的状态代码 Status reason(状态原因)。

**注意:**如果项目的根堆栈处于 UPDATE_ROLLBACK_FAILED 状态,请按照下文中的说明操作:CloudFormation 堆栈停滞在 UPDATE_ROLLBACK_FAILED 状态时如何对其进行更新?

5.    选择 Events(事件)选项卡。查看处于故障状态的所有近期事件的 Status(状态)、Status reason(状态原因)和 Logical ID(逻辑 ID)值。

**注意:**请务必确定所有处于 UPDATE_FAILED 状态的事件。

6.    选择 Resources(资源)选项卡。查看处于故障状态的所有资源的 Status(状态)、Status reason(状态原因)和 Logical ID(逻辑 ID)值。

7.    (仅适用于嵌套堆栈)在 Resources(资源)窗格上,寻找类型为 AWS::CloudFormation::Stack 的资源。然后,查看处于故障状态的嵌套堆栈的 Status reason(状态原因)值。

**重要提示:**进行故障排除时,请忽略状态为 Resource update cancelled(资源更新已取消)的故障资源。此状态表示依赖的下游资源未发生故障,但因其他资源故障也未更新。

根据控制台中列出的 Status(状态)、Status reason(状态原因)和 Logical ID(逻辑 ID)值修复问题

按照 Amplify CLI 问题排查指南中的说明进行操作。有关更多信息,您还可以在 GitHub 的 Amplify CLI 问题页面中搜索特定的 Status reasons(状态原因)。

**注意:**最佳做法是先在非生产环境中测试解决方案。


AWS 官方
AWS 官方已更新 2 年前