BackupInUseException
TL;DR — 这张表上有一个相互冲突的备份控制平面操作仍在进行中:备份此刻正在被创建、删除或恢复。这些操作是串行化的——等进行中的那个完成(通过 DescribeBackup 检查 BackupStatus),然后重试你的操作。
含义
BackupInUseException: There is another ongoing conflicting backup control
plane operation on the table. The backup is either being created, deleted
or restored to a table.按需备份操作(CreateBackup、DeleteBackup、RestoreTableFromBackup)是控制平面调用,DynamoDB 会拒绝那些会与已在同一备份或表上运行的操作相冲突的调用。这是一个瞬时状态错误,而不是权限或数据问题。
为什么会发生
- 删除一个仍在创建中的备份——
CreateBackup尚未到达AVAILABLE。 - 在从某备份进行恢复时删除它——恢复操作会一直持有该备份,直到新表创建完成。
- 重叠的自动化——一个清理脚本和一个备份调度器互相竞争,或者一个重试循环对同一张表重复触发了
CreateBackup。 - 突发超过速率限制——
DeleteBackup每秒最多接受 10 次调用;在紧凑的循环中扫掉大量备份会同时触发冲突和限流。
如何修复
检查有什么正在进行中,然后等待:
aws dynamodb describe-backup --backup-arn arn:aws:dynamodb:...:table/orders/backup/01234... # BackupStatus: CREATING | AVAILABLE | DELETED一旦状态稳定就重试你的操作(对已完成的创建而言是
AVAILABLE;正在恢复的表会通过describe-table到达ACTIVE)。用退避重试而非直接硬失败——备份操作耗时从数秒到数分钟不等;在调用外套一个简单的等待并重试循环即可吸收这种串行化。
串行化你的自动化——每张表由一个所有者负责备份生命周期操作;把删除排在创建之后,而不是用一个可能重叠的 cron 同时运行两者。
控制批量删除的节奏——保持在每秒 10 次
DeleteBackup调用以下,并把这个异常当作放慢速度的信号来处理。
备份保护的是你最输不起的数据——在删除某张表的备份之前,先用 DynoTable 桌面应用浏览一下表里实际有什么,并用 DynamoDB 定价计算器估算恢复的读取流量。
在 DynoTable 中定位
在删除备份之前,请浏览它们保护的实时表 - 使用 ⌘K 打开它并确认数据仍然重要。 DynoTable 可以在清理脚本运行之前跨账户抽查表内容 (⌘P)。当你计划 RestoreTableFromBackup 时,使用 pricing calculator 估计恢复读取流量。在“设置”→“配置文件”下为拥有备份的每个帐户配置配置文件“Test Connection”。参见连接 AWS和安装。在等待正在进行的备份完成时,使用 ⌘K 浏览受保护的表,以确认数据仍然值得保留。每隔几秒进行一次DescribeBackup轮询就足够了——备份创建通常在几分钟内完成,删除也有类似的限制。
来源
- DeleteBackup — Amazon DynamoDB API Reference(2026-07-13 验证)
- Restoring a DynamoDB table from a backup(2026-07-13 验证)
相关错误
- BackupNotFoundException——ARN 根本解析不到任何备份。
- Table already exists——恢复到一个已被占用的名称。
- LimitExceededException——并发控制平面操作过多。
- 学习:Backups & point-in-time recovery
参考资料
- DeleteBackup — Amazon DynamoDB API Reference
- RestoreTableFromBackup — Amazon DynamoDB API Reference
- DescribeBackup — Amazon DynamoDB API Reference
- Restoring a DynamoDB table from a backup — Amazon DynamoDB Developer Guide
最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。