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 定價計算器估算還原的讀取流量。
相關錯誤
- BackupNotFoundException — ARN 根本無法解析為任何備份。
- Table already exists — 還原到一個已被占用的名稱。
- LimitExceededException — 並行的控制平面操作太多。
- 學習:Backups & point-in-time recovery
References
- 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 官方文件。