ValidationException: Item size has exceeded the maximum allowed size

TL;DR — Ein DynamoDB-Item darf höchstens 400 KB groß sein (Attributnamen + Werte zusammen). Dein Write drückt ein Item darüber hinaus. Lagere das große Feld aus (nach S3 oder aufgeteilt über mehrere Items) und speichere stattdessen eine Referenz.

Was es bedeutet

ValidationException: Item size has exceeded the maximum allowed size

Das Limit ist 400 KB = 409.600 Bytes. Es zählt das gesamte Item: jeden Attributnamen plus seinen Wert, UTF-8-kodiert, inklusive verschachteltem Map-/List-Overhead. Ein UpdateItem, das ein bestehendes Item über 400 KB wachsen lässt, schlägt auf dieselbe Weise fehl (als Update lautet die Meldung „Item size to update has exceeded the maximum allowed size").

Warum es passiert

  • Speichern großer Blobs inline — base64-Bilder, PDFs, große JSON-Dokumente.
  • Eine unbegrenzte Liste/Map (append-only-Arrays, Event-Logs), die im Lauf der Zeit wächst, bis sie 400 KB überschreitet.
  • Lange Attributnamen, über ein großes Item multipliziert.
  • Zu viel Denormalisierung in ein einzelnes Item.

So behebst du es

  1. Lagere große Werte nach S3 aus. Speichere das Objekt in S3 und behalte nur den Key/die URL in DynamoDB. Das ist das Standardmuster für alles, was sich dem Limit nähert.
  2. Teile die Daten über mehrere Items auf. Verwende das Item-Collection-/Vertical-Partition-Muster — eine logische Entität als mehrere Items, die einen Partition Key teilen.
  3. Begrenze wachsende Collections. Lass ein einzelnes Item keine unbegrenzte Liste ansammeln; rolle Einträge in Kind-Items, gekeyt nach Sort Key.
  4. Komprimiere wirklich großen Text vor dem Speichern (gzip → Binärattribut), falls S3 keine Option ist.

Beispiel — Referenzmuster

// Instead of storing the blob inline, store an S3 pointer:
await doc.send(
  new PutCommand({
    TableName: 'Documents',
    Item: {
      pk: 'DOC#1',
      title: 'Q3 report',
      s3Key: 'documents/DOC#1/report.pdf', // the bytes live in S3
      sizeBytes: 2_400_000
    }
  })
);

FAQ

Was ist die maximale Item-Größe in DynamoDB? 400 KB (409.600 Bytes) pro Item, gezählt werden jeder Attributname plus sein Wert, UTF-8-kodiert, inklusive verschachteltem Map- und List-Overhead. Ein UpdateItem, das ein bestehendes Item über 400 KB wachsen lässt, schlägt mit demselben Fehler fehl.

Wie speichere ich Daten größer als 400 KB in DynamoDB? Lagere den großen Wert nach S3 aus und behalte nur den Key oder die URL in DynamoDB, teile die Daten über mehrere Items auf, die einen Partition Key teilen, oder komprimiere großen Text in ein Binärattribut. Lass ein einzelnes Item keine unbegrenzte Liste ansammeln.

So reproduzierst du es

Ein einzelnes Item mit einem 410-KB-String-Attribut, knapp über der 400-KB-Obergrenze:

await client.send(
  new PutItemCommand({
    TableName: 'orders',
    Item: {pk: {S: 'BIG'}, sk: {S: 'META'}, blob: {S: 'x'.repeat(410 * 1024)}}
  })
);

Echte Ausgabe:

ValidationException: Item size has exceeded the maximum allowed size
HTTP 400

Die Meldung sagt dir nie, wie weit du darüber liegst oder welches Attribut es verursacht hat — wenn ein Item also aus mehreren Quellen zusammengesetzt wird, miss vor dem Schreiben, statt nach der Zurückweisung zu bisektieren.

Verwandte Fehler

Referenzen

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

Am 2026-07-26 gegen DynamoDB Local 2.x mit dem AWS SDK for JavaScript v3.1095.0 reproduziert — die Ausgabe oben ist wortgetreu.

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.