跳至内容

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

1 分钟阅读
0

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

简短描述

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

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

解决方法

识别停滞的资源

完成以下步骤:

  1. 打开 CloudFormation 控制台
  2. 在导航窗格中,选择 Stacks(堆栈),然后选择处于卡滞状态的堆栈。
  3. 选择 Resources(资源)选项卡。
  4. Resources(资源)部分中,请参阅 Status(状态)列。查找卡滞在 CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS 或 DELETE_IN_PROGRESS 状态的资源。
  5. AWS 管理控制台中,检查您的资源,以查找与您的资源对应的服务。
    **注意:**例如,如果 Amazon Elastic Container Service (Amazon ECS) 服务停留在创建状态,请在 Amazon ECS 控制台中检查该资源。

如果资源在其相应的控制台中没有显示任何错误,请使用 AWS CloudTrail 日志对此问题进行故障排除。有关查看 CloudTrail 日志的信息,请参阅使用 CloudTrail 事件历史记录查看事件

查看 CloudTrail 日志

完成以下步骤:

  1. 打开 CloudFormation 控制台
  2. 在导航窗格中,选择 Stacks(堆栈),然后选择处于卡滞状态的堆栈。
  3. 选择 Resources(资源)选项卡。
  4. Resources(资源)部分中,请参阅 Status(状态)列。查找所有停滞在 CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS 或 DELETE_IN_PROGRESS 状态的资源。
  5. 选择 Events(事件)选项卡,然后记下 CloudFormation 初始化该停滞资源创建的时间戳。
  6. 打开 CloudTrail 控制台
  7. 在导航窗格中,选择 Event history(事件历史记录)。
  8. 对于 Time range(时间范围),输入您在步骤 5 中记下的时间戳的日期和时间,作为开始时间()。对于结束时间(),输入比开始时间晚 5 分钟的日期和时间。
    注意:例如,如果 CloudFormation 于 2020-01-01 上午 9 点初始化了停滞资源的创建,则输入 2020-01-01上午 9 点作为开始时间,输入 2020-01-01上午 9:05 作为结束时间。
  9. 选择 Apply(应用)。
  10. 在返回的事件列表中,查找与资源的创建或更新 API 调用相关的 API 调用。例如,您可以查找适用于 Amazon Elastic Block Store (Amazon EBS) 卷更新的 ModifyVolume
    **提示:**请等待几分钟,等待 API 调用显示在 CloudTrail 日志中。API 调用不总是会立即出现在日志中。

绕过超时

您可以绕过超时来解决堆栈的状态。有关详细信息,请参阅如何阻止我的 Amazon ECS 服务在 CloudFormation 中无法稳定?以及如何删除 CloudFormation 中停滞在 DELETE_FAILED 状态或 DELETE_IN_PROGRESS 状态的 Lambda 支持的自定义资源?

如果堆栈卡滞在 CREATE_IN_PROGRESSUPDATE_IN_PROGRESS 状态,则可以使用以下堆栈操作来停止进程:

**注意:**要了解问题的根本原因,请参阅对 CloudFormation 进行故障排除

AWS 官方已更新 5 个月前