DynamoDB LimitExceededException
TL;DR — 你一次發起了過多的控制平面操作(或觸及了一個表/帳戶限制)。你帳戶中同時處於 CREATING/UPDATING/DELETING 狀態的表和索引最多可有 500 個。序列化你的表操作,等待 ACTIVE,然後用退避重試。
這是什麼意思
LimitExceededException: Too many operations for a given subscriber.這是一個控制平面錯誤——它來自 CreateTable、UpdateTable、DeleteTable、索引建立、恢復及類似呼叫,而不是來自 GetItem/PutItem/Query。DynamoDB 在告訴你,你已經超過了一個並行或帳戶限制。它是一個 HTTP 400,AWS 把它列為可以重試——隨著進行中的操作完成,這個狀況會消除。
為什麼會發生
- 並行的表/索引操作過多——處於
CREATING、DELETING或UPDATING狀態的表和索引的累計數量不能超過每帳戶/區域 500 個。(每個帳戶最多允許 500 個同時進行的表操作——CreateTable、UpdateTable、DeleteTable、UpdateTimeToLive、RestoreTableFromBackup、RestoreTableToPointInTime——而建立帶次要索引的表時最多隻允許 250 個並行請求。) - 批次棧部署——CloudFormation/CDK/Terraform 同時建立或拆除許多表(或許多 GSI)會超出並行預算。
- 帳戶資源配額——觸及每帳戶/區域 2,500 張表的軟配額,或 50 個同時匯入作業的限制。
- DynamoDB Streams 誤用——用大於 1000 的
Limit呼叫GetRecords,或超過 2 個程序同時從同一個 streams 分片讀取。 - 注意: 在同一張表仍處於
UPDATING時發起的第二個UpdateTable會表現為 ResourceInUseException,而不是這個錯誤——但兩者都意味著"先等待ACTIVE"。
如何修正
- 序列化控制平面操作——在對一張表(及每個 GSI)發起下一個變更之前,等它變為
ACTIVE。輪詢DescribeTable並在TableStatus === 'ACTIVE'上設關卡。 - 用指數退避重試——這個限制是瞬時的;隨著進行中的操作排空,一次退避重試通常會成功。
- 限制批次部署的節奏——拆分一個大棧,使你不會一次建立數百個表/GSI,或者新增顯式的
DependsOn排序,讓它們不會同時觸發。 - 檢查你的服務配額——如果你接近每帳戶表數限制,就在 Service Quotas 中請求配額提升,而不是無限重試。
- 逐個新增 GSI——每個
UpdateTable操作只能建立或刪除一個全域次要索引,因此序列化索引變更並等待每次回填。
常見問題
如何修復 DynamoDB 中的 LimitExceededException? 停止並行發出控制平面操作(CreateTable/UpdateTable/DeleteTable/索引更改)。等待每個表和索引在下一次更改之前達到 ACTIVE,將 CREATING/UPDATING/DELETING 中的表計數保持在帳戶上限以下,然後使用指數退避重試。
LimitExceededException 是節流錯誤嗎? 這是控制平面並行/限制錯誤,而不是資料平面限制。資料平面限制表面為 ProvisionedThroughputExceededException、ThrottingException 或 RequestLimitExceeded。
將 DynoTable 指向 Local
DynoTable 是資料平面用戶端 — GetItem、Query 和 Scan 不消耗此錯誤保護的控制平面並行預算。如果部署指令碼命中
LimitExceededException 建立表格時,使用DynoTable 瀏覽表格已經達到 ACTIVE 並從 表格設定 驗證模式,同時你的 IaC 重試。對於本地堆疊,執行 DynamoDB Local 和 -sharedDb 並透過本地設定檔案 (Running DynamoDB Local) 連線,以便你可以檢查部分部署,而無需等待每個 GSI 在 AWS 中完成。
single-table design planner有助於素描在你在繁忙的帳戶中解僱另一個 CreateTable 之前,請先調整表格形狀。
相關錯誤
- ResourceInUseException——對一張已在被修改或已經存在的表的操作。
- ThrottlingException——資料/控制平面速率限制。
- RequestLimitExceeded——帳戶請求速率限制。
- 學習:DynamoDB migrations
來源
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide(2026-07-13 驗證)
- UpdateTable — Amazon DynamoDB API Reference(2026-07-13 驗證)
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide(2026-07-13 驗證)