为什么我的 AWS CloudFormation 堆栈停滞在 CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS、UPDATE_ROLLBACK_IN_PROGRESS 或 DELETE_IN_PROGRESS 状态?

上次更新时间:2020 年 3 月 10 日

我的 AWS CloudFormation 堆栈目前停滞在 CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS、UPDATE_ROLLBACK_IN_PROGRESS 或 DELETE_IN_PROGRESS 状态。

解决方案

确定处于停滞状态的资源

  1. 打开 AWS CloudFormation 控制台
  2. 在导航窗格中,选择堆栈,然后选择处于停滞状态的堆栈。
  3. 选择资源选项卡。
  4. 资源部分的状态列中,查找已启动但尚未完成创建、更新或删除进程的堆栈中的资源。
    注意:您查找的资源可能处于 CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS 或 DELETE_IN_PROGRESS 状态。
  5. AWS 管理控制台中,检查您的资源的服务是否与您的资源对应。
    注意: 控制台会因处于停滞状态的资源不同而不同。例如,如果 Amazon Elastic Container Service (ECS) 服务停滞在创建状态,则在 Amazon ECS 控制台中检查该资源。

检查 AWS CloudTrail 日志

如果资源在其对应的控制台中未显示任何错误,则您可以对 CloudTrail 日志中的问题进行排查。有关查看 CloudTrail 日志的信息,请参阅使用 CloudTrail 事件历史记录查看事件

  1. 打开 AWS CloudFormation 控制台
  2. 在导航窗格中,选择堆栈,然后选择处于停滞状态的堆栈。
  3. 选择资源选项卡。
  4. 资源部分的状态列中,查找已启动但尚未完成创建、更新或删除进程的堆栈中的资源。
    注意:您查找的资源可能处于 CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS 或 DELETE_IN_PROGRESS 状态。
  5. 选择事件选项卡,然后记下 AWS CloudFormation 初始化创建该停滞资源时的时间戳。
  6. 打开 CloudTrail 控制台
  7. 在导航窗格中,选择事件历史记录
  8. 对于时间范围的开始时间(开始时间),输入您在第 5 步中记下的日期和时间。对于结束时间(结束时间),输入开始时间之后 5 分钟的日期和时间。
    注意:例如,如果 AWS CloudFormation 在 2020-01-01 上午 9:00 初始化创建停滞资源,则输入 2020-01-01 09:00 AM 作为开始时间,2020-01-01 9:05 AM 作为结束时间。
  9. 选择应用
  10. 在返回的事件列表中,查找与创建或更新资源的 API 调用相关的 API 调用。例如,您可以查找用于 Amazon Elastic Block Store (Amazon EBS) 卷更新的 ModifyVolume
    提示:尝试等待几分钟,以便该 API 调用显示在 CloudTrail 日志中。API 调用并不会总是立即显示在日志中。

使 AWS CloudFormation 堆栈退出停滞状态

在大多数情况下,您必须等待 your AWS CloudFormation 堆栈超时。超时长度各不相同,它取决于 AWS CloudFormation 等待达到所需状态的单个资源稳定要求。

您可以控制堆栈超时并使用回滚触发器来控制 AWS CloudFormation 等待的时长。有关回滚触发器的更多信息,请参阅使用 AWS CloudFormation 堆栈终止保护和回滚触发器维护基础设施可用性

在某些情况下,您可以绕过超时并使堆栈快速退出停滞状态。这些情况包括自定义资源和 Amazon ECS 服务。有关更多信息,请参阅以下内容:


这篇文章对您有帮助吗?

我们可以改进什么?


需要更多帮助?