DynamoDB ItemCollectionSizeLimitExceededException

TL;DR — 只有帶本地次要索引(LSI)的表才有這個限制:所有共享一個分割區索引鍵的項目("項目集合")合計最多 10 GB。你的某個分割區索引鍵越過了它。重新設計使得沒有單個分割區索引鍵積累無界的資料——或者去掉 LSI。

這是什麼意思

ItemCollectionSizeLimitExceededException: Collection size exceeded.

一個項目集合是每個具有相同分割區索引鍵值的項目——在基礎表_以及_它所有的 LSI 中。沒有 LSI 的表沒有逐集合的大小上限(一張表的總大小不受約束)。 LSI 的表把每個集合上限設為 10 GB,而這個錯誤意味著一次寫入會把某個集合推過它。這個限制不適用於全域次要索引。

它以 HTTP 400 返回,AWS 把它列為可以重試——但重試只有在集合縮回 10 GB 以下後才會成功。讀取,以及縮減集合大小的寫入(刪除、移除或修剪屬性)仍然被允許,因此你可以挖出一條出路。

為什麼會發生

  • 一個熱點/無界的分割區索引鍵——一個鍵(一個大租戶、一個熱門使用者)積累的項目遠多於其他鍵。
  • 一個你也許不需要的 LSI——10 GB 上限_只_因為表有一個 LSI 才存在。
  • 單個分割區索引鍵下隨時間的僅追加增長

如何修正

  1. 重新分片分割區索引鍵。 把過大的實體跨多個分割區索引鍵拆分(例如 TENANT#42#1TENANT#42#2),使得沒有單個集合無界地增長。
  2. 用 GSI 替換 LSI。 GSI 有它們自己的分割區索引鍵且沒有項目集合大小限制——對大多數訪問模式而言,GSI 反正是更好的選擇(而且可以在表建立後新增/移除,不像 LSI)。
  3. 把冷項目歸檔出熱集合(到另一張表或 S3)。

在 DynoTable 中定位

在集合達到 10 GB 之前查詢哪些分割區索引鍵包含最多的項目 — 使用 ⌘K 開啟表,按分割區索引鍵排序,並掃描具有異常長項目列表的鍵。當你計劃重新分片時,item size calculator 有助於估算每個項目的增長。使用 pricing calculator 將 LSI 寫入放大與 GSI 替代方案進行比較。使用 ⌘P 切換設定檔案;在“設定”→“設定檔案”下配置它們。參見連線 AWS安裝

來源

相關錯誤

參考資料

最後核實於 2026-07-13,依據上方連結的 AWS 官方文件。

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

一款快速的 DynamoDB 桌面用戶端,可執行 DynamoDB 無法執行的真正 SQL — JOINs、GROUP BY、聚合 — 並支援視覺化編輯與使用你自己的 Bedrock 金鑰的 AI 代理。

30 天免費試用,無需信用卡 — 之後為無時間限制的免費方案。