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 管線試圖再次新增它。
  • 兩條自動化路徑競爭 — 平行部署或區域擴充工作都提交相同的複本建立。

如何修正

  1. 在變更複製群組前檢查它:

    aws dynamodb describe-table --table-name orders \
      --query 'Table.Replicas[].RegionName'
  2. 讓操作具冪等性 — 在建立時捕捉這個例外(在刪除時捕捉 ReplicaNotFoundException)並將它視為成功;表格已在期望狀態:

    catch (e) {
      if (e.name === 'ReplicaAlreadyExistsException') return; // desired state reached
      throw e;
    }
  3. 讓 IaC 與現實一致 — 將手動新增的複本匯入你的堆疊,而非讓每次部署重新嘗試建立。

  4. 序列化複本變更 — 每個表格一次一個複本更新;在下一個變更前等待表格回到 ACTIVE(且新複本離開 CREATING)。

確認複本確實提供資料 — 而不只是 API 接受了它 — 是一項看表格的工作:DynoTable 桌面應用程式直接瀏覽每個 Region 的複本,而 DynamoDB 定價計算器顯示額外 Region 增加的持續成本。

相關錯誤

References

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

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

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