DynamoDB ItemCollectionSizeLimitExceededException

TL;DR — Nur Tabellen mit einem Local Secondary Index (LSI) haben dieses Limit: Alle Items mit demselben Partition Key (die „Item Collection") dürfen zusammen höchstens 10 GB groß sein. Einer deiner Partition Keys hat das überschritten. Gestalte das Modell so um, dass kein einzelner Partition Key unbegrenzt Daten ansammelt — oder wirf den LSI raus.

Was es bedeutet

ItemCollectionSizeLimitExceededException: Collection size exceeded.

Eine Item Collection ist jedes Item mit demselben Partition-Key-Wert — in der Basistabelle und in allen ihren LSIs. Tabellen ohne LSI haben keine Größenobergrenze pro Collection (die Gesamtgröße einer Tabelle ist unbeschränkt). Tabellen mit LSI begrenzen jede Collection auf 10 GB, und dieser Fehler bedeutet, dass ein Schreibvorgang eine Collection darüber hinaus drücken würde. Das Limit gilt nicht für Global Secondary Indexes.

Er kommt als HTTP 400 zurück, und AWS listet ihn als wiederholbar auf — aber ein erneuter Versuch gelingt erst, wenn die Collection wieder unter 10 GB geschrumpft ist. Reads sowie Writes, die die Größe der Collection reduzieren (Deletes, Entfernen oder Kürzen von Attributen), sind weiterhin erlaubt, sodass du dich herausarbeiten kannst.

Warum es passiert

  • Ein heißer/unbegrenzter Partition Key — ein Key (ein großer Mandant, ein beliebter Nutzer) häuft weit mehr Items an als andere.
  • Ein LSI, den du vielleicht nicht brauchst — die 10-GB-Obergrenze existiert nur, weil die Tabelle einen LSI hat.
  • Rein additives Wachstum unter einem einzelnen Partition Key über die Zeit.

So behebst du es

  1. Sharde den Partition Key neu. Verteil die übergroße Entität auf mehrere Partition Keys (etwa TENANT#42#1, TENANT#42#2), damit keine einzelne Collection unbegrenzt wächst.
  2. Ersetz den LSI durch einen GSI. GSIs haben einen eigenen Partition Key und kein Item-Collection-Größenlimit — für die meisten Zugriffsmuster ist ein GSI ohnehin die bessere Wahl (und lässt sich anders als ein LSI nach der Tabellenerstellung hinzufügen und entfernen).
  3. Archivier kalte Items aus der heißen Collection heraus (in eine separate Tabelle oder nach S3).
  4. Beobachte die Collection-Größe, bevor du an die Wand fährst. ReturnItemCollectionMetrics: SIZE liefert bei Writes eine geschätzte Collection-Größe zurück, sodass du alarmieren kannst, bevor Writes scheitern.

In DynoTable erkennen

Find which partition keys carry the most items before a collection hits 10 GB — öffne die Tabelle mit ⌘K, sort by partition key, and scan for keys with unusually long item lists. The Item-Size-Rechner helps estimate per-item growth wenn du plan a re-shard.

Use the Pricing-Rechner um LSI-Write-Amplification gegen eine GSI-Alternative zu vergleichen. Wechsle Profile mit ⌘P; configure them under Einstellungen → Profile. Siehe Mit AWS verbinden und Installation.

Quellen

Verwandte Fehler

Referenzen

Zuletzt verifiziert am 2026-07-13 gegen die oben verlinkte offizielle AWS-Dokumentation.

Mit DynamoDB ohne die Console arbeiten

Ein schneller DynamoDB-Desktop-Client, der das echte SQL ausführt, das DynamoDB nicht kann — JOINs, GROUP BY, Aggregationen — mit visueller Bearbeitung und einem KI-Agenten auf deinen eigenen Bedrock-Schlüsseln.

30 Tage kostenlos testen, keine Kreditkarte — danach der Kostenlos-Tarif ohne Zeitlimit.