DynamoDB ReplicaNotFoundException
TL;DR — 更新または削除しようとしているリージョンレプリカが、このグローバルテーブルの一部ではありません。通常は 誤ったリージョン名、すでに削除された レプリカ、または 別の進行中のレプリカ更新と競合する 呼び出しです。DescribeTable で現在のレプリカを確認し、存在するものを対象にしてください。
意味
ReplicaNotFoundException: The specified replica is no longer part of the global table.グローバルテーブルの操作(UpdateGlobalTable、または ReplicaUpdates/Delete を伴う UpdateTable)は、レプリカを AWS リージョンで指定します。この HTTP 400 は、指定したリージョンが現在グローバルテーブルのレプリカでないことを意味します。実在するレプリカを対象にするまで クライアント側の問題でリトライ不可 です。
発生する理由
- 誤ったリージョンコード — レプリカが
us-east-1にあるのにus-east-2、または一度も追加されなかったリージョン。 - レプリカがすでに削除された — 以前の更新がすでにテーブルから外したリージョンに対する削除。
- 重複するレプリカの変更 —
UpdateTableは、テーブルが以前の変更でまだUPDATINGの間は実行できません。AWS は各レプリカの追加/削除に別々のリクエストを発行することを推奨しています。競合するオートメーションは、別のジョブがすでに削除したレプリカを対象にできます。 - プライマリとレプリカの混同 — このテーブルのレプリカをホストしないリージョンを操作する。
- バージョンの混乱 — レガシーの Version 2017.11.29(
GlobalTable)と現行の 2019.11.21(テーブル上のレプリカ)の API の混在。
修正方法
- 現在のレプリカとそのステータスを一覧表示します:
aws dynamodb describe-table --table-name <Table> \ --query "Table.Replicas[].{Region:RegionName,Status:ReplicaStatus}" - 実際にリストにあるリージョンを対象にします — リージョンコードを正確にコピーします。
- 一度に1つのレプリカを変更します。 次の更新の前に、テーブルが
ACTIVEに戻る(そして以前の追加/削除が完了する)のを待ちます。 - すでに消えているレプリカを削除していますか? することはありません。削除に対しては
ReplicaNotFoundExceptionをすでに満たされたものとして扱います。 - 現行(2019.11.21)の API を使います — レガシーのグローバルテーブル API ではなく、
UpdateTableのReplicaUpdatesでレプリカを管理します。
リージョンをまたいでテーブルを管理していますか?DynoTable デスクトップアプリ は各テーブルのレプリカとそのステータスを表示するため、本当にグローバルテーブルの一部であるリージョンに対して操作できます。
まず DynoTable で確認
UpdateTable の ReplicaUpdates を実行する前に、DynoTable でテーブルを開き、テーブル統計とレプリカの一覧で実際に存在するリージョンを確認しましょう。⌘P でプロファイルを切り替え、グローバルテーブルを所有するアカウントを見ている状態にします。レプリカのリージョンが消えていれば、DynoTable は単にそれを表示しません — クリックしてしまう古いコンソールのカードは存在しません。
リージョンコードを実際の一覧と突き合わせてから、IaC か CLI でコントロールプレーンの変更を出し直してください。レプリカをまたぐ日々の読み取りでは、ARN を当てずっぽうに書くのではなく、リージョンごとに DynoTable のプロファイルを 1 つ持ち、⌘1–⌘9 で切り替えましょう。クエリビルダーは有効なプロファイルのリージョンから外れないので、us-east-1 の Query と us-west-2 のテーブル名が混ざることはありません。
出典
- UpdateGlobalTable — Amazon DynamoDB API Reference (2026-07-13 時点で検証)
- Global tables — Amazon DynamoDB Developer Guide (2026-07-13 時点で検証)
関連するエラー
- ResourceNotFoundException — テーブル自体がリージョン/アカウント内に見つからない。
- ResourceInUseException — レプリカの変更がテーブルの現在の状態と競合する。
- Learn: Global tables
参考資料
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- Global tables — Amazon DynamoDB Developer Guide
- Determining the global table version you are using — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。