为什么我的 CloudFormation 堆栈停滞在 IN_PROGRESS 状态?

上次更新日期:2022 年 5 月 5 日

我的 AWS CloudFormation 堆栈目前停滞在以下状态之一:

  • CREATE_IN_PROGRESS
  • UPDATE_IN_PROGRESS
  • UPDATE_ROLLBACK_IN_PROGRESS
  • DELETE_IN_PROGRESS

如何修复此问题?

解决方法

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

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

您可以绕过某些自定义资源和 Amazon Elastic Container Service (Amazon ECS) 资源的超时。要验证哪个资源停滞并确定是否必须等待,或者是否可以绕过超时,请执行以下操作:

识别停滞的资源

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

检查 AWS CloudTrail 日志

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

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

绕过自定义资源和 Amazon ECS 服务的超时

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


这篇文章对您有帮助吗?


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