DynamoDB global table version mismatch
TL;DR — DynamoDB にはグローバルテーブルのバージョンが2つあります: 2017.11.29(レガシー) と 2019.11.21(現行) です。レガシーのグローバルテーブルの作成やレプリカの追加は、メンバーテーブルが要件を満たさないと失敗します。レガシーのレプリカは 空 で、同じ名前、キースキーマ、一致する GSI を共有し、DynamoDB Streams(新旧イメージ)が有効 で、一貫した書き込みキャパシティ を使う必要があります。そして、あるバージョンの API をもう一方のバージョンのテーブルに向けると、そのまま失敗します。すべてのレプリカの構成を揃える(または現行バージョンにアップグレードする)してから再試行してください。
意味
ValidationException: Cannot create a global table from a table with ...
ValidationException: ... replicas must have the same ... across all regionsレガシー バージョン(2017.11.29)は、独立して作成されたリージョナルテーブルを名前付きのグローバルテーブルに縫い合わせるため、メンバーテーブルが正確に揃うことを要求します。現行 バージョン(2019.11.21)はテーブル自体でレプリケーションを管理し(UpdateTable でレプリカを追加)、TTL、Auto Scaling、GSI、保管時の暗号化の設定をレプリカ間で自動的に同期します。バージョン不一致エラーは、組み合わせるテーブルが食い違っているとき、あるいはツールが誤ったバージョンの API サーフェスと通信しているときに現れます。
発生する理由
- レプリカテーブルが空でない — レガシーの
CreateGlobalTable/UpdateGlobalTableAPI は、すべてのメンバーテーブルがデータを含まないことを要求します。 - 名前またはキースキーマの不一致 — すべてのレプリカは同じテーブル名とプライマリキーを共有する必要があります。
- GSI の不一致 — グローバルセカンダリインデックスは、名前とハッシュ/ソートキーがレプリカ間で一致する必要があります。
- ストリームがオフまたは誤ったビュータイプ — 各レガシーレプリカは、アイテムの新旧イメージの両方で DynamoDB Streams を有効にする必要があります。
- 一貫しない書き込みキャパシティ — AWS は、レプリカテーブルと一致するセカンダリインデックスで書き込みキャパシティ設定を一貫して設定することを要求します(Auto Scaling 推奨、または等しいレプリケート書き込みキャパシティユニット)。
- 2つのバージョンの混在 — レガシー API(
DescribeGlobalTable、UpdateGlobalTable)を現行バージョンのテーブルに向けると、動作する代わりに GlobalTableNotFoundException が返ります。 - 古い AWS CLI/SDK — 2019.11.21 モデルより前のリリースは、
UpdateTableベースのレプリカ管理を駆動できません。
修正方法
- すべてのリージョンでメンバーテーブルを標準化します — 同じ名前とキースキーマ、一致する GSI、新旧イメージで有効なストリーム、一貫した書き込みキャパシティ/Auto Scaling ターゲット。
- 現在の状態を確認します — リージョンごとに
DescribeTable(現行)またはDescribeGlobalTableSettings(レガシー専用 API)で確認し、ドリフトをそれぞれUpdateTableまたはUpdateGlobalTableSettingsで修正します。 - レガシー → 現行のアップグレードを コンソールの バージョン更新 フローから慎重に行います。すべてのレプリカリージョンで
dynamodb:UpdateGlobalTableversion権限が必要で、アップグレード中もレプリカは読み取りと書き込みを提供し続けます。 - 現行バージョンのレプリカを管理する前に、AWS CLI/SDK を最新リリースに更新します。
- 互換性のあるベーステーブルにレプリカを追加します — 現行バージョンのレプリカは
UpdateTableで追加します(テーブルにはすでにデータが含まれていてもよいが、対象リージョンにその名前のテーブルがまだ存在してはいけない)。レガシーのレプリカは空で始める必要があります。
マルチリージョンのテーブルを管理し、コンソールを行き来せずに構成を比較したいですか?DynoTable デスクトップアプリ はリージョンごとに接続するため、各レプリカのスキーマとインデックスを1か所で目視できます。
DynoTable で測る
グローバルテーブルを作る前に、リージョンをまたいでスキーマ、GSI、ストリーム設定を比べておきましょう — ⌘P で切り替え、⌘K で各レプリカを開き、Indexes と Stream のパネルを並べて展開します。
レプリケーションされる書き込みのコストは料金計算ツールで見積もれます。各リージョンは Settings → Profiles で設定し、Test Connection を実行してください。AWS に接続するとインストールを参照してください。
出典
- DynamoDB global tables versions (2026-07-13 時点で検証)
- CreateGlobalTable — Amazon DynamoDB API Reference (2026-07-13 時点で検証)
関連するエラー
- ResourceInUseException — レプリカテーブル/リージョンがすでに使用中。
- ReplicaNotFoundException — 参照されたレプリカリージョンが存在しない。
- 学習: DynamoDB Global Tables
参考資料
- CreateGlobalTable — Amazon DynamoDB API Reference
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- DynamoDB global tables versions (determining and upgrading) — Amazon DynamoDB Developer Guide
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。