为什么我的 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 状态。
解决方案
确定处于停滞状态的资源
- 打开 AWS CloudFormation 控制台。
- 在导航窗格中,选择堆栈,然后选择处于停滞状态的堆栈。
- 选择资源选项卡。
- 在资源部分的状态列中,查找已启动但尚未完成创建、更新或删除进程的堆栈中的资源。
注意:您查找的资源可能处于 CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS 或 DELETE_IN_PROGRESS 状态。 - 在 AWS 管理控制台中,检查您的资源的服务是否与您的资源对应。
注意: 控制台会因处于停滞状态的资源不同而不同。例如,如果 Amazon Elastic Container Service (ECS) 服务停滞在创建状态,则在 Amazon ECS 控制台中检查该资源。
检查 AWS CloudTrail 日志
如果资源在其对应的控制台中未显示任何错误,则您可以对 CloudTrail 日志中的问题进行排查。有关查看 CloudTrail 日志的信息,请参阅使用 CloudTrail 事件历史记录查看事件。
- 打开 AWS CloudFormation 控制台。
- 在导航窗格中,选择堆栈,然后选择处于停滞状态的堆栈。
- 选择资源选项卡。
- 在资源部分的状态列中,查找已启动但尚未完成创建、更新或删除进程的堆栈中的资源。
注意:您查找的资源可能处于 CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS 或 DELETE_IN_PROGRESS 状态。 - 选择事件选项卡,然后记下 AWS CloudFormation 初始化创建该停滞资源时的时间戳。
- 打开 CloudTrail 控制台。
- 在导航窗格中,选择事件历史记录。
- 对于时间范围的开始时间(开始时间),输入您在第 5 步中记下的日期和时间。对于结束时间(结束时间),输入开始时间之后 5 分钟的日期和时间。
注意:例如,如果 AWS CloudFormation 在 2020-01-01 上午 9:00 初始化创建停滞资源,则输入 2020-01-01 09:00 AM 作为开始时间,2020-01-01 9:05 AM 作为结束时间。 - 选择应用。
- 在返回的事件列表中,查找与创建或更新资源的 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 服务。有关更多信息,请参阅以下内容: