GlobalTableNotFoundException

TL;DR — DescribeGlobalTable / UpdateGlobalTable 只看得到版本 2017.11.29(Legacy)的 global table。建立於版本 2019.11.21(Current)上的 global table — 也就是你應該使用的 — 是透過 DescribeTable / UpdateTable 以_帶複本的一般表格_來管理,而 legacy API 會回報它不存在。在斷定表格消失前,先檢查你在哪個版本上。

這是什麼意思

GlobalTableNotFoundException: The specified global table does not exist.

DynamoDB 有兩個 global-table 世代,帶有兩個互不相交的 API 介面。legacy(2017.11.29)世代註冊一個具名的「global table」物件,供 DescribeGlobalTableUpdateGlobalTableUpdateGlobalTableSettings 操作。current(2019.11.21)世代沒有這種物件 — 複本住在表格本身 — 因此即使你的表格複製得完全正常,那些 legacy 呼叫仍以此例外回應。

為什麼會發生

  • 表格是 current 版本(2019.11.21)的 global table — 目前最常見的原因:legacy API 根本沒有索引它。
  • 從未以該名稱建立 global table — 表格存在但沒有複本,或稍早的複製設定失敗。
  • Region 錯誤或名稱拼錯 — legacy global-table 註冊是以精確名稱查找的。

如何修正

  1. 判斷版本:

    aws dynamodb describe-table --table-name orders \
      --query 'Table.GlobalTableVersion'
    # "2019.11.21" → use DescribeTable/UpdateTable, not the legacy APIs
  2. 透過 UpdateTable 管理 current 版本複本:

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

    並以 describe-tableReplicas 欄位)檢視它們,而非 describe-global-table

  3. 使用 legacy 工具? 若你確實在操作 2017.11.29 global table,驗證註冊的名稱與 Region — 並規劃升級至 2019.11.21,AWS 建議這個版本以獲得彈性與更低的複製寫入成本。

  4. 從頭建立: 建立表格,然後透過 UpdateTable 新增複本 — 在新程式碼中不要動用 CreateGlobalTable(legacy)。

跨 Region 檢查複本健康度,在表格並排時更快 — DynoTable 桌面應用程式從一個視窗連到每個 Region,而 DynamoDB 定價計算器在你新增複本前估算複製寫入成本。

相關錯誤

References

最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。

不必透過主控台就能操作 DynamoDB

DynoTable 是一款快速的 DynamoDB 桌面用戶端 — 瀏覽表格、執行 SQL 風格的查詢,並在本機編輯項目。