You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CDK堆栈处于UPDATE_ROLLBACK_FAILED状态如何继续部署?

能否直接通过CDK执行ContinueUpdateRollback操作

CDK原生不支持直接执行该操作。cdk deploy的核心逻辑是生成CloudFormation模板后向CloudFormation提交栈更新请求,而CloudFormation会直接拦截所有处于UPDATE_ROLLBACK_FAILED状态栈的更新请求,CDK本身没有封装触发续跑回滚的相关命令,无法直接通过CDK CLI完成该操作。

处理该异常状态的最佳实践
  • 先定位根因再操作:第一时间到CloudFormation控制台查看对应栈的事件流,找到回滚失败的具体资源和报错原因。注意不要只修复部署流程需要的权限,回滚过程中对资源做删除、修改操作同样需要对应IAM权限,很多人补权限时会漏掉这部分导致续跑仍然失败。
  • 非生产环境优先走删栈重部署路径:如果栈没有不可丢失的资源,直接删除状态异常的栈后重新执行cdk deploy,是效率最高、不会残留状态异常的处理方式,不用纠结修复回滚流程。
  • 续跑回滚前先核对资源实际状态:如果回滚过程中已经手动调整过部分资源的配置,要提前记录这些变更,避免续跑时资源状态和CloudFormation预期不符再次报错。
  • 回滚完成后先做漂移检测:等栈回到UPDATE_ROLLBACK_COMPLETE状态后,不要立刻执行部署,先通过CloudFormation的漂移检测功能、配合cdk diff命令核对CDK定义的期望状态、栈模板记录的状态、云上资源实际状态三者一致,再走后续部署流程。
生产环境不允许删除栈的标准操作流程

生产环境遇到该问题绝对不要直接删栈,按以下步骤操作风险最低:

  1. 修复根因:根据CloudFormation事件流的报错,先把导致回滚失败的问题(比如权限缺失类错误)彻底修复,保证回滚流程执行时不会再遇到相同报错。
  2. 触发续跑回滚:可选择两种方式触发:
    • 控制台操作:打开CloudFormation控制台找到对应栈,在栈操作菜单里选择「继续更新回滚」,按照向导提示操作即可
    • CLI操作:执行命令aws cloudformation continue-update-rollback --stack-name <你的CDK栈完整名称>

    注意:如果某一个资源持续报错、且你已经手动把该资源调整到了回滚完成后的预期状态,可以追加--resources-to-skip <资源逻辑ID>参数跳过该资源的回滚校验,这个参数不要随意使用,跳过的资源会被CloudFormation标记为状态合规,后续不会再被回滚流程修改,错用会导致持久化的配置漂移。

  3. 等待回滚完成:全程观察栈事件流,直到栈状态稳定为UPDATE_ROLLBACK_COMPLETE,如果中途再次报错,回到根因修复步骤处理完再重试,不要在报错状态下反复提交部署请求。
  4. 部署前校验:先对栈执行漂移检测,确认所有资源状态和栈模板记录一致,再在本地执行cdk diff确认本次要部署的代码变更没有预期外的资源操作。
  5. 灰度执行部署:首次重新部署建议先生成变更集而不直接执行,运行cdk deploy --no-execute-changeset,等CDK创建好变更集后,到CloudFormation控制台人工审核所有变更操作,确认没有误删、误改生产资源的操作后,再手动执行变更集完成部署。

内容的提问来源于stack exchange,提问作者Moshe Shaham

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 05:51:28