如何停止CloudFormation中当前正在运行的所有堆栈操作?
如何中断CloudFormation中正在运行的堆栈操作?
懂的都懂!当你在CloudFormation里执行了堆栈配置或更新,结果半路出错,看着它慢悠悠回滚或者卡着失败,那种抓心挠肝的懊恼真的太真实了——有时候一等就是几小时甚至几天,翻AWS文档还像走迷宫一样找不到有用的信息。我之前踩过好多次这个坑,折腾了好几天才摸清楚可行的办法,现在把这些经验整理出来:
首先得明确:AWS CloudFormation本身没有直接的"停止"按钮,但有几种靠谱的方法来中断正在进行的操作,分场景来用:
1. 针对回滚/删除中的堆栈:控制台强制删除(保留资源)
如果你的堆栈处于ROLLBACK_IN_PROGRESS、DELETE_IN_PROGRESS或者UPDATE_ROLLBACK_IN_PROGRESS状态:
- 打开CloudFormation控制台,找到目标堆栈
- 右键点击堆栈,选择**「Delete Stack」,一定要勾选「Retain resources」**选项
- 这个操作会立刻终止当前的回滚/删除流程,同时保留已经创建好的资源,不会把它们删掉(这一点超级重要,别漏勾)
2. 针对更新中的堆栈:用CLI取消更新
如果堆栈正处于UPDATE_IN_PROGRESS状态,控制台没有直接的取消按钮,但可以用AWS CLI命令来中断:
aws cloudformation cancel-update-stack --stack-name 你的堆栈名称
执行这个命令后,堆栈会进入UPDATE_ROLLBACK_IN_PROGRESS状态,这时候你再用上面方法1的「删除+保留资源」操作,就能终止回滚流程了。
如果是想中断删除操作,CLI也可以指定保留资源:
aws cloudformation delete-stack --stack-name 你的堆栈名称 --retain-resources "资源逻辑ID1" "资源逻辑ID2"
把里面的资源逻辑ID换成你想保留的资源ID就行,多个资源用空格分隔。
3. 极端情况:手动终止底层资源(谨慎使用)
如果上面两种方法都不管用(比如堆栈彻底卡住,控制台和CLI都没反应),可以尝试手动删除CloudFormation正在操作的底层资源(比如EC2实例、RDS数据库等),但这种方法风险极高,很容易导致资源残留、数据丢失,只建议作为最后手段。
几个关键提醒
CREATE_IN_PROGRESS状态的堆栈:目前AWS没有官方方法直接停止,只能等它完成或者失败,所以最好提前在模板里设置TimeoutInMinutes参数,给创建操作设置合理的超时时间,避免卡太久。- 保留资源选项:一定要记得勾选,不然CloudFormation会把所有相关资源都删掉,哭都来不及。
- 操作后检查状态:执行完中断操作后,一定要确认堆栈最终进入
ROLLBACK_COMPLETE或者DELETE_COMPLETE状态,避免后续出现异常。
内容的提问来源于stack exchange,提问作者ggwzrd
相关产品推荐
相关产品推荐

