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に達します)。ハードに失敗させるのではなくバックオフして再試行します — バックアップ操作は数秒から数分かかります。呼び出しを囲むシンプルな待機・再試行ループが直列化を吸収します。
オートメーションを直列化します — バックアップのライフサイクル操作はテーブルごとに1つのオーナーに限定し、重複しうる cron で両方を走らせるのではなく、削除を作成の後ろにキューイングします。
一括削除のペースを調整します —
DeleteBackupを毎秒10回未満に保ち、この例外を減速のシグナルとして処理します。
バックアップは、最も失いたくないデータを守ります。バックアップを整理する前に DynoTable デスクトップアプリ でテーブルの実際の中身を確認し、復元時の読み取りトラフィックを DynamoDB 料金計算ツール で見積もりましょう。
関連するエラー
- BackupNotFoundException — ARN がそもそもバックアップに解決されない。
- Table already exists — 使用済みの名前に復元しようとしている。
- LimitExceededException — 同時実行のコントロールプレーン操作が多すぎる。
- Learn: 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 ドキュメントに照らして確認しました。