GlobalTableNotFoundException
TL;DR — DescribeGlobalTable / UpdateGlobalTable 只能看到版本 2017.11.29(Legacy)的全域性表。一個建立在版本 2019.11.21(Current)之上的全域性表——也就是你應該使用的那個——是透過 DescribeTable / UpdateTable 作為_一張帶副本的常規表_來管理的,而舊版 API 會報告它不存在。在斷定表沒了之前,先檢查你所在的版本。
這是什麼意思
GlobalTableNotFoundException: The specified global table does not exist.
# what the engine actually returns, reproduced against the live DynamoDB service:
GlobalTableNotFoundException: Global table not found: Global table with name: 'no-such-global-table' does not exist.DynamoDB 有兩代全域性表,帶兩套互不相交的 API 表面。舊版(2017.11.29)會註冊一個命名的"全域性表"物件,DescribeGlobalTable、UpdateGlobalTable 和 UpdateGlobalTableSettings 都對它操作。當前版本(2019.11.21)沒有這樣的物件——副本存在於表本身上——因此那些舊版呼叫會以這個異常回應,即便你的表複製得非常好。
為什麼會發生
- 該表是一個當前版本(2019.11.21)的全域性表——這是目前最常見的原因:舊版 API 乾脆沒有索引它。
- 從未以該名稱建立過全域性表——表存在但沒有副本,或者複製設定早前失敗了。
- 區域錯誤或名稱拼錯——舊版全域性表註冊是按精確名稱查詢的。
如何修正
確定版本:
aws dynamodb describe-table --table-name orders \ --query 'Table.GlobalTableVersion' # "2019.11.21" → use DescribeTable/UpdateTable, not the legacy APIs透過
UpdateTable管理當前版本的副本:aws dynamodb update-table --table-name orders \ --replica-updates '[{"Create": {"RegionName": "eu-west-1"}}]'並用
describe-table(Replicas欄位)而非describe-global-table來檢查它們。在使用舊版工具? 如果你確實營運 2017.11.29 全域性表,核實註冊的名稱和區域——並規劃升級到 2019.11.21,AWS 為了靈活性和更低的複製寫入成本而推薦它。
從零建立: 建立表,然後透過
UpdateTable新增副本——不要在新程式碼中動用CreateGlobalTable(舊版)。
跨區域檢查副本健康狀況時,把表並排放在一起會更快——DynoTable 桌面應用從一個視窗連線到每個區域,而 DynamoDB 定價計算器會在你新增副本之前估算複製寫入成本。
在 DynoTable 中檢查大小
DynoTable 從一個視窗連線到每個區域 - 使用 ⌘P 切換並在每個設定檔案中開啟相同的表名稱以檢視副本是否存在並提供資料。表側邊欄顯示覆制後設資料,無需呼叫舊版全域性表 API。在新增副本之前,使用 pricing calculator 估計複製寫入成本。在“設定”→“設定檔案”下配置每個區域,並在執行 UpdateTable 副本更新之前執行 Test Connection。參見連線 AWS和安裝。如果舊版工具呼叫 DescribeGlobalTable,請首先檢查 DescribeTable 上的 GlobalTableVersion — 當前版本表返回 2019.11.21,並且必須透過 UpdateTable 進行管理。即使複製正常,舊版 API 也無法看到它們。升級工具以使用 ReplicaUpdates 呼叫當前版本表的 UpdateTable,而不是 CreateGlobalTable。
來源
- DynamoDB global tables versions(2026-07-13 驗證)
- UpdateTable — Amazon DynamoDB API Reference(2026-07-13 驗證)
相關錯誤
- 全域性表版本不匹配——同樣的兩代之分,從升級路徑撞上。
- ReplicaNotFoundException——該區域不屬於複製組。
- ReplicaAlreadyExistsException——該區域已經屬於複製組。
- 學習:DynamoDB global tables
參考資料
- 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 官方文件。