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」物件,供 DescribeGlobalTable、UpdateGlobalTable 與 UpdateGlobalTableSettings 操作。current(2019.11.21)世代沒有這種物件 — 複本住在表格本身 — 因此即使你的表格複製得完全正常,那些 legacy 呼叫仍以此例外回應。
為什麼會發生
- 表格是 current 版本(2019.11.21)的 global table — 目前最常見的原因:legacy API 根本沒有索引它。
- 從未以該名稱建立 global table — 表格存在但沒有複本,或稍早的複製設定失敗。
- Region 錯誤或名稱拼錯 — legacy global-table 註冊是以精確名稱查找的。
如何修正
判斷版本:
aws dynamodb describe-table --table-name orders \ --query 'Table.GlobalTableVersion' # "2019.11.21" → use DescribeTable/UpdateTable, not the legacy APIs透過
UpdateTable管理 current 版本複本:aws dynamodb update-table --table-name orders \ --replica-updates '[{"Create": {"RegionName": "eu-west-1"}}]'並以
describe-table(Replicas欄位)檢視它們,而非describe-global-table。使用 legacy 工具? 若你確實在操作 2017.11.29 global table,驗證註冊的名稱與 Region — 並規劃升級至 2019.11.21,AWS 建議這個版本以獲得彈性與更低的複製寫入成本。
從頭建立: 建立表格,然後透過
UpdateTable新增複本 — 在新程式碼中不要動用CreateGlobalTable(legacy)。
跨 Region 檢查複本健康度,在表格並排時更快 — DynoTable 桌面應用程式從一個視窗連到每個 Region,而 DynamoDB 定價計算器在你新增複本前估算複製寫入成本。
相關錯誤
- Global table version mismatch — 從升級路徑碰到的同一兩世代分歧。
- ReplicaNotFoundException — 該 Region 不是複製群組的一部分。
- ReplicaAlreadyExistsException — 該 Region 已經是。
- 學習:DynamoDB global tables
References
- UpdateGlobalTable — Amazon DynamoDB API Reference
- DynamoDB global tables versions (determining the version) — Amazon DynamoDB Developer Guide
- UpdateTable — Amazon DynamoDB API Reference
- CreateGlobalTable — Amazon DynamoDB API Reference
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。