DynamoDB LSI item collection 10 GB limit
TL;DR — ローカルセカンダリインデックス を持つテーブルでは、アイテムコレクション — 1つのパーティションキーを共有するすべてのアイテムと、その LSI 投影 — は合計で最大 10 GB です。この上限を持つのは LSI テーブルだけです。各アイテムコレクションは単一のパーティションに収まる必要があるからです。コレクションを 10 GB を超えて押し上げる書き込みは ItemCollectionSizeLimitExceededException で失敗します。ItemCollectionMetrics を監視し、成長するキーを再シャーディングするか、LSI を(そのような制限のない)GSI に置き換えてください。
意味
ItemCollectionSizeLimitExceededException: Collection size exceeded.アイテムコレクション は、テーブルとそのすべての LSI において同じパーティションキー値を持つすべてのアイテムのセットです。テーブルが LSI を持つとき、DynamoDB は各アイテムコレクションを単一のパーティションに格納するため、コレクションはそのパーティションの 10 GB の容量に制限されます。LSI を 持たない テーブルにはコレクションごとのサイズ制限がありません(GSI にもありません)。したがって、このエラーは1つのパーティションキーのデータが LSI 配下で無制限に成長したシグナルです。これは HTTP 400 で、AWS はリトライ可能としてリストしていますが、リトライはコレクションが縮小してから成功します。読み取りとサイズを減らす書き込み(削除、属性のトリミング)は依然として許可されます。
発生する理由
- 無制限のパーティションキー — 大きなテナント、忙しいユーザー、または追記専用のログがすべて1つのキー配下に書き込む。
- LSI 自体 — 10 GB の上限は、テーブルが LSI を持つ からこそ 存在します(テーブル作成時に作成され、削除できない)。
- 広い LSI 投影 — LSI に多くの属性を投影すると、コレクションがより速く膨らみます。
- 書き込みがついに超えるまで静かに 10 GB に近づいた 着実な成長。
修正方法
- パーティションキーを再シャーディングします。 大きすぎるエンティティを複数のキーに分割し(
TENANT#42#1、TENANT#42#2など)、単一のコレクションが無制限に成長しないようにします。 - LSI を GSI に置き換えます。 GSI は独自のパーティションキーを持ち、アイテムコレクションのサイズ制限が ありません。ほとんどのアクセスパターンでは GSI の方が適しており、テーブル作成後に追加/削除できます(LSI はできません)。
- LSI の投影をトリムします — LSI を維持する必要があれば、より少ない属性を投影して(
KEYS_ONLY/INCLUDE)コレクションの成長を遅くします。 - ホットコレクションから コールドなアイテムをアーカイブします — 別のテーブルや S3 へ。
- 壁にぶつかる前に監視します。 書き込み(
PutItem、UpdateItem、DeleteItem、BatchWriteItem、TransactWriteItems)でReturnItemCollectionMetrics: SIZEを設定します。DynamoDB はSizeEstimateRangeGBの見積もりを返し、AWS はユーザー定義のしきい値(例えば 8 GB)でアラートすることを推奨しています。10 GB の前に行動できるようにです。
LSI 制限を脱するためにキーとインデックスを作り直していますか?DynoTable デスクトップアプリ はパーティションキーでフィルタできるため、再シャーディングする前にどのコレクションが大きすぎるか見られます。
DynoTable から
10 GB に近づいているパーティションキーを見つけましょう — ⌘K でテーブルを開き、パーティションキーで並べ替え、コレクションごとのアイテム数を数えます。広い LSI のプロジェクションがコレクションを膨らませている場合、アイテムサイズ計算ツールで増え方を見積もれます。
LSI の書き込みコストと GSI への移行は、料金計算ツールで比べられます。プロファイルの切り替えは ⌘P です。AWS に接続するとインストールを参照してください。
出典
- Local secondary indexes (2026-07-13 時点で検証)
- PutItem — Amazon DynamoDB API Reference (2026-07-13 時点で検証)
関連するエラー
- ItemCollectionSizeLimitExceededException — 同じ例外を、一般的なキャパシティの枠組みで。
- Item size has exceeded the maximum allowed size — 別のアイテムごとの 400 KB 上限。
- Learn: Item collections · GSI vs LSI · インデックス (Indexes)
参考資料
- Local secondary indexes — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- PutItem — Amazon DynamoDB API Reference
最終検証日 2026-07-13、上記にリンクした公式 AWS ドキュメントに照らして確認しました。