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/UpdateGlobalTable API は、すべてのメンバーテーブルがデータを含まないことを要求します。
  • 名前またはキースキーマの不一致 — すべてのレプリカは同じテーブル名とプライマリキーを共有する必要があります。
  • GSI の不一致 — グローバルセカンダリインデックスは、名前とハッシュ/ソートキーがレプリカ間で一致する必要があります。
  • ストリームがオフまたは誤ったビュータイプ — 各レガシーレプリカは、アイテムの新旧イメージの両方で DynamoDB Streams を有効にする必要があります。
  • 一貫しない書き込みキャパシティ — AWS は、レプリカテーブルと一致するセカンダリインデックスで書き込みキャパシティ設定を一貫して設定することを要求します(Auto Scaling 推奨、または等しいレプリケート書き込みキャパシティユニット)。
  • 2つのバージョンの混在 — レガシー API(DescribeGlobalTableUpdateGlobalTable)を現行バージョンのテーブルに向けると、動作する代わりに GlobalTableNotFoundException が返ります。
  • 古い AWS CLI/SDK — 2019.11.21 モデルより前のリリースは、UpdateTable ベースのレプリカ管理を駆動できません。

修正方法

  1. すべてのリージョンでメンバーテーブルを標準化します — 同じ名前とキースキーマ、一致する GSI、新旧イメージで有効なストリーム、一貫した書き込みキャパシティ/Auto Scaling ターゲット。
  2. 現在の状態を確認します — リージョンごとに DescribeTable(現行)または DescribeGlobalTableSettings(レガシー専用 API)で確認し、ドリフトをそれぞれ UpdateTable または UpdateGlobalTableSettings で修正します。
  3. レガシー → 現行のアップグレードを コンソールの バージョン更新 フローから慎重に行います。すべてのレプリカリージョンで dynamodb:UpdateGlobalTableversion 権限が必要で、アップグレード中もレプリカは読み取りと書き込みを提供し続けます。
  4. 現行バージョンのレプリカを管理する前に、AWS CLI/SDK を最新リリースに更新します
  5. 互換性のあるベーステーブルにレプリカを追加します — 現行バージョンのレプリカは UpdateTable で追加します(テーブルにはすでにデータが含まれていてもよいが、対象リージョンにその名前のテーブルがまだ存在してはいけない)。レガシーのレプリカは空で始める必要があります。

マルチリージョンのテーブルを管理し、コンソールを行き来せずに構成を比較したいですか?DynoTable デスクトップアプリ はリージョンごとに接続するため、各レプリカのスキーマとインデックスを1か所で目視できます。

DynoTable で測る

グローバルテーブルを作る前に、リージョンをまたいでスキーマ、GSI、ストリーム設定を比べておきましょう — ⌘P で切り替え、⌘K で各レプリカを開き、IndexesStream のパネルを並べて展開します。

レプリケーションされる書き込みのコストは料金計算ツールで見積もれます。各リージョンは Settings → Profiles で設定し、Test Connection を実行してください。AWS に接続するインストールを参照してください。

出典

関連するエラー

参考資料

最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。

Console なしで DynamoDB を扱う

DynamoDB では実行できない本物の SQL(JOINs、GROUP BY、集計)を実行する高速な DynamoDB デスクトップクライアント。ビジュアル編集と、あなた自身の Bedrock キーで動く AI エージェントを備えています。

30日間無料トライアル、クレジットカード不要 — その後は期限のない Free プラン。