DynamoDB global table version mismatch
TL;DR — DynamoDB 有兩個全域性表版本:2017.11.29(Legacy)和 2019.11.21(Current)。當成員表不滿足要求時,建立一個 legacy 全域性表或新增一個副本會失敗——legacy 副本必須是空的、共享相同的名稱、鍵模式和匹配的 GSI、啟用了 DynamoDB Streams(新舊映像),並使用一致的寫入容量——而把一個版本的 API 指向另一個版本的表會直接失敗。對齊每個副本的配置(或升級到 Current 版本),然後重試。
這是什麼意思
ValidationException: Cannot create a global table from a table with ...
ValidationException: ... replicas must have the same ... across all regionsLegacy 版本(2017.11.29)把獨立建立的區域表拼接成一個命名的全域性表,因此它要求成員表精確對齊。Current 版本(2019.11.21)在表本身上管理複製——你用 UpdateTable 新增副本——並跨副本自動同步 TTL、自動擴縮、GSI 和靜態加密設定。當你合併的表不一致,或者工具與錯誤版本的 API 表面對話時,就會出現版本不匹配錯誤。
為什麼會發生
- 一個副本表不為空——legacy 的
CreateGlobalTable/UpdateGlobalTableAPI 要求每個成員表都不含資料。 - 名稱或鍵模式不匹配——所有副本必須共享相同的表名和主索引鍵。
- 不匹配的 GSI——全域次要索引在名稱以及雜湊/排序索引鍵上都必須跨副本匹配。
- Streams 關閉或檢視型別錯誤——每個 legacy 副本都需要啟用 DynamoDB Streams,且帶有項目的新舊兩種映像。
- 不一致的寫入容量——AWS 要求寫入容量設定在副本表和匹配的次要索引之間一致地設定(推薦自動擴縮,或相等的複製寫入容量單元)。
- 混用兩個版本——把 legacy API(
DescribeGlobalTable、UpdateGlobalTable)指向一個 Current 版本的表會返回 GlobalTableNotFoundException 而非正常工作。 - 過時的 AWS CLI/SDK——一個早於 2019.11.21 模型的版本無法驅動基於
UpdateTable的副本管理。
如何修正
- 跨所有區域標準化成員表——相同的名稱和鍵模式、匹配的 GSI、啟用了帶新舊映像的 streams,以及一致的寫入容量/自動擴縮目標。
- 檢查當前狀態——每個區域用
DescribeTable(Current)或DescribeGlobalTableSettings(一個僅 Legacy 的 API),並分別用UpdateTable或UpdateGlobalTableSettings修正偏差。 - 有意識地把 Legacy 升級到 Current——透過主控台的 Update version 流程,它需要在每個副本區域中擁有
dynamodb:UpdateGlobalTableversion許可權,且副本在升級期間會持續提供讀寫服務。 - 在管理 Current 版本副本之前,把你的 AWS CLI/SDK 更新到較新的版本。
- 把副本新增到一個相容的基礎表——Current 版本副本用
UpdateTable新增(表可能已經含有資料,但目標區域中必須尚不存在同名的表);legacy 副本必須從空開始。
在管理一張多區域表,想在不切換主控台的情況下比較配置?DynoTable 桌面應用按區域連線,讓你能在一處細看每個副本的模式和索引。
在 DynoTable 中測量
在建立全域性表之前,比較跨區域的架構、GSI 和流設定 — 使用 ⌘P 切換,使用 ⌘K 開啟每個副本,並並排展開 Indexes 和 Stream 面板。使用 pricing calculator 估計複製寫入成本。在“設定”→“設定檔案”下使用 Test Connection 配置每個區域。參見連線 AWS和安裝。
來源
- DynamoDB global tables versions(2026-07-13 驗證)
- CreateGlobalTable — Amazon DynamoDB API Reference(2026-07-13 驗證)
相關錯誤
- ResourceInUseException——一個副本表/區域已在使用中。
- ReplicaNotFoundException——一個被引用的副本區域不存在。
- 學習:DynamoDB global tables
參考資料
- CreateGlobalTable — Amazon DynamoDB API Reference
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- DynamoDB global tables versions (determining and upgrading) — Amazon DynamoDB Developer Guide
最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。