GlobalTableNotFoundException

TL;DR — DescribeGlobalTable / UpdateGlobalTableバージョン 2017.11.29(レガシー) のグローバルテーブルしか見えません。バージョン 2019.11.21(現行) で構築されたグローバルテーブル — こちらを使うべきです — は、DescribeTable / UpdateTable を通じて レプリカを持つ通常のテーブル として管理され、レガシー API はそれを存在しないと報告します。テーブルが消えたと仮定する前に、どのバージョンを使っているか確認してください。

意味

GlobalTableNotFoundException: The specified global table does not exist.

DynamoDB には、2つの互いに素な API サーフェスを持つ2世代のグローバルテーブルがあります。レガシー(2017.11.29)世代は、DescribeGlobalTableUpdateGlobalTableUpdateGlobalTableSettings が操作する、名前付きの「グローバルテーブル」オブジェクトを登録します。現行(2019.11.21)世代にはそのようなオブジェクトがなく — レプリカはテーブル自体に存在します — そのため、テーブルが完璧にレプリケートしていても、それらのレガシー呼び出しはこの例外で応答します。

発生する理由

  • テーブルが現行バージョン(2019.11.21)のグローバルテーブルである — 圧倒的に多い原因: レガシー API は単純にそれをインデックス化しません。
  • その名前でグローバルテーブルが作成されたことがない — テーブルは存在するがレプリカがない、または以前にレプリケーションのセットアップが失敗した。
  • 誤ったリージョンまたは名前のタイプミス — レガシーのグローバルテーブル登録は正確な名前で検索されます。

修正方法

  1. バージョンを判別します:

    aws dynamodb describe-table --table-name orders \
      --query 'Table.GlobalTableVersion'
    # "2019.11.21" → use DescribeTable/UpdateTable, not the legacy APIs
  2. 現行バージョンのレプリカを UpdateTable で管理します:

    aws dynamodb update-table --table-name orders \
      --replica-updates '[{"Create": {"RegionName": "eu-west-1"}}]'

    そして、describe-global-table の代わりに describe-tableReplicas フィールド)で検査します。

  3. レガシーツールですか? 本当に 2017.11.29 のグローバルテーブルを運用しているなら、登録の名前とリージョンを検証し、柔軟性とレプリケート書き込みコストの低減のため AWS が推奨する 2019.11.21 へのアップグレードを計画します。

  4. ゼロから作成する場合: テーブルを作成し、それから UpdateTable でレプリカを追加します。新しいコードで CreateGlobalTable(レガシー)に手を伸ばさないでください。

リージョン間のレプリカの健全性を確認するのは、テーブルを並べて見られると速くなります。DynoTable デスクトップアプリ は1つのウィンドウからすべてのリージョンに接続し、DynamoDB 料金計算ツール はレプリカを追加する前にレプリケート書き込みコストを見積もります。

関連するエラー

References

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

Console なしで DynamoDB を扱う

DynoTable は DynamoDB 向けの高速なデスクトップクライアントです — テーブルを閲覧し、SQL スタイルのクエリを実行し、アイテムをローカルで編集できます。