ReplicaAlreadyExistsException
TL;DR — 你正在新增的 Region 已在 global table 的複製群組中。新增不具冪等性,因此在第一個成功後,相同請求的重跑(重試、重播的部署、偏移的 IaC)會失敗。先描述表格並只建立不在那裡的複本 — 或將這個例外視為「已完成」並繼續。
這是什麼意思
ReplicaAlreadyExistsException: The specified replica is already part of
the global table.複本管理是一個帶硬性前置條件的控制平面變更:Create 要求 Region 不存在,Delete 要求它存在。在 eu-west-1 已複製表格時要求建立 eu-west-1 違反了該前置條件 — 你想要的狀態已經存在。
為什麼會發生
- 重試或重播的佈建步驟 — 第一次嘗試成功了(也許在逾時掩蓋成功之後),而重試重新新增了相同的 Region。
- 基礎架構即程式碼偏移 — 複本在主控台中手動新增,然後 IaC 管線試圖再次新增它。
- 兩條自動化路徑競爭 — 平行部署或區域擴充工作都提交相同的複本建立。
如何修正
在變更複製群組前檢查它:
aws dynamodb describe-table --table-name orders \ --query 'Table.Replicas[].RegionName'讓操作具冪等性 — 在建立時捕捉這個例外(在刪除時捕捉
ReplicaNotFoundException)並將它視為成功;表格已在期望狀態:catch (e) { if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached throw e; }讓 IaC 與現實一致 — 將手動新增的複本匯入你的堆疊,而非讓每次部署重新嘗試建立。
序列化複本變更 — 每個表格一次一個複本更新;在下一個變更前等待表格回到
ACTIVE(且新複本離開CREATING)。
確認複本確實提供資料 — 而不只是 API 接受了它 — 是一項看表格的工作:DynoTable 桌面應用程式直接瀏覽每個 Region 的複本,而 DynamoDB 定價計算器顯示額外 Region 增加的持續成本。
相關錯誤
- ReplicaNotFoundException — 鏡像情況:刪除一個不在群組中的 Region。
- GlobalTableNotFoundException — legacy 與 current API 混淆。
- ResourceInUseException — 表格正在修改中。
- 學習:DynamoDB global tables
References
- UpdateGlobalTable — Amazon DynamoDB API Reference
- UpdateTable — Amazon DynamoDB API Reference
- Global tables — Amazon DynamoDB Developer Guide
最後驗證於 2026-07-13,對照上方連結的 AWS 官方文件。