AWS DynamoDB表显示UpdateRollback跳过状态无法重部署如何解决
CloudFormation栈回滚跳过资源后重新部署DynamoDB表的操作方法
这个状态是CloudFormation更新回滚流程中,因资源定义错误标记为跳过的特殊残留状态,常规直接更新栈不会重新触发该资源的创建流程,按以下步骤操作即可解决:
- 先把栈恢复到稳定状态
选中对应资源栈,打开「栈操作」菜单选择「回滚到先前版本」,回滚选项里勾选保留已创建资源,等待栈状态回到UPDATE_COMPLETE或者CREATE_COMPLETE。这一步会清除栈上挂载的失败更新、异常回滚标记,等栈回到正常稳定状态再做后续操作,不然所有更新请求都会被CloudFormation直接拦截。 - 修正模板内DynamoDB表的错误配置
优先排查几个高频出错点:- 主键、排序键定义和全局/本地二级索引配置冲突
- 预置读写吞吐量数值超出当前账号的DynamoDB服务配额
- 表名、标签字段包含非法字符
- 栈执行角色缺少DynamoDB表创建、配置相关的IAM权限
修正完成后先本地做模板校验,执行命令aws cloudformation validate-template --template-body file://你的模板文件路径.yaml,确认没有语法和基础规则错误再提交,避免再次触发回滚。
- 提交更新重新创建被跳过的表
栈回到稳定状态后,选择「更新当前栈」,上传修正后的模板,高级配置里保持「更新失败时自动回滚」的默认勾选,直接提交更新即可。此时CloudFormation会检测到模板中声明、但栈资源列表里不存在的DynamoDB资源,自动触发资源创建流程。如果你之前曾成功创建过同名DynamoDB表、只是回滚时被标记为跳过,更新时选择「将现有资源导入栈」选项,匹配对应DynamoDB表的逻辑ID即可,不需要删除已有表重建。
- 兜底处理方案
如果上述操作仍然无法识别被跳过的资源,先找到资源列表里状态为Resource skipped during UpdateRollback的DynamoDB条目,记录它的逻辑ID,临时在模板里给这个DynamoDB资源加上DeletionPolicy: Retain配置,其他配置保持不变提交一次空更新;等栈更新完成后,再把模板里的DynamoDB配置替换为你修正后的正确版本,移除临时添加的保留策略(也可根据运维需求保留),再次提交更新就会正常触发表创建。
内容的提问来源于stack exchange,提问作者fabian lam
相关产品推荐
相关产品推荐

