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.

按需备份操作(CreateBackupDeleteBackupRestoreTableFromBackup)是控制平面调用,DynamoDB 会拒绝那些会与已在同一备份或表上运行的操作相冲突的调用。这是一个瞬时状态错误,而不是权限或数据问题。

为什么会发生

  • 删除一个仍在创建中的备份——CreateBackup 尚未到达 AVAILABLE
  • 在从某备份进行恢复时删除它——恢复操作会一直持有该备份,直到新表创建完成。
  • 重叠的自动化——一个清理脚本和一个备份调度器互相竞争,或者一个重试循环对同一张表重复触发了 CreateBackup
  • 突发超过速率限制——DeleteBackup 每秒最多接受 10 次调用;在紧凑的循环中扫掉大量备份会同时触发冲突和限流。

如何修复

  1. 检查有什么正在进行中,然后等待:

    aws dynamodb describe-backup --backup-arn arn:aws:dynamodb:...:table/orders/backup/01234...
    # BackupStatus: CREATING | AVAILABLE | DELETED

    一旦状态稳定就重试你的操作(对已完成的创建而言是 AVAILABLE;正在恢复的表会通过 describe-table 到达 ACTIVE)。

  2. 用退避重试而非直接硬失败——备份操作耗时从数秒到数分钟不等;在调用外套一个简单的等待并重试循环即可吸收这种串行化。

  3. 串行化你的自动化——每张表由一个所有者负责备份生命周期操作;把删除排在创建之后,而不是用一个可能重叠的 cron 同时运行两者。

  4. 控制批量删除的节奏——保持在每秒 10 次 DeleteBackup 调用以下,并把这个异常当作放慢速度的信号来处理。

备份保护的是你最输不起的数据——在删除某张表的备份之前,先用 DynoTable 桌面应用浏览一下表里实际有什么,并用 DynamoDB 定价计算器估算恢复的读取流量。

相关错误

References

最后核实于 2026-07-13,依据上方链接的 AWS 官方文档。

无需控制台即可使用 DynamoDB

DynoTable 是面向 DynamoDB 的快速桌面客户端 —— 浏览表、运行 SQL 风格的查询,并在本地编辑项。