Size of hashkey has exceeded the maximum size limit of 2048 bytes

TL;DR — DynamoDB deckelt Schlüssellängen: Ein Partition-Key-Wert (Hash Key) darf höchstens 2048 Byte groß sein, ein Sort-Key-Wert (Range Key) höchstens 1024 Byte, gemessen in UTF-8- (oder rohen Binär-)Bytes. Ein Write, dessen Schlüssel das Limit überschreitet, wird abgelehnt. Kürze den Schlüssel — hashe lange Werte, oder verschieb die sperrigen Daten in ein Nicht-Schlüsselattribut.

Was es bedeutet

ValidationException: One or more parameter values were invalid: Size of hashkey has exceeded the maximum size limit of2048 bytes

# sort-key variant:
ValidationException: One or more parameter values were invalid: Aggregated size of all range keys has exceeded the size limit of 1024 bytes

# on DynamoDB Local you get one combined sentence instead, naming neither key:
ValidationException: Hash primary key values must be under 2048 bytes, and range primary key values must be under 1024 bytes

(Ja, das fehlende Leerzeichen in "of2048" steht so in der tatsächlichen Meldung des Dienstes.) Key-Attribute werden von DynamoDB indiziert und physisch partitioniert, sodass ihre Länge weit unter dem 400-KB-Item-Limit begrenzt ist. Der Partition-Key-Wert muss 1 bis 2048 Bytes und der Sort-Key-Wert 1 bis 1024 Bytes betragen. Die Byte-Zahl ist die kodierte Größe (UTF-8 für Strings, rohe Bytes für Binärdaten) — Multibyte-Zeichen zählen für mehr als eins. Es ist eine HTTP-400-ValidationException, clientseitig, nicht wiederholbar, bis der Key schrumpft.

Warum es passiert

  • Ein langer String als Partition Key — eine URL, ein vollständiges Dokument, ein kodierter Blob oder ein verketteter zusammengesetzter Key, direkt als Key-Wert verwendet.
  • Ein ausschweifender zusammengesetzter Sort Key — viele mit # verbundene Segmente, die zusammen 1024 Bytes überschreiten.
  • Base64- / serialisierte Daten in einem Key — die Kodierung bläht die Byte-Zahl über das Limit hinaus auf.
  • Multibyte-Text — Nicht-ASCII-Inhalt, dessen UTF-8-Kodierung größer ist, als die Zeichenanzahl vermuten lässt.

So behebst du es

  1. Hashe den langen Wert — speicher einen deterministischen Digest (etwa SHA-256, ~32 Byte) als Schlüssel und behalte den vollen Wert in einem separaten Nicht-Schlüsselattribut.
  2. Wähl einen kompakteren Schlüssel — einen kürzeren natürlichen Bezeichner statt des sperrigen Felds.
  3. Kürz den zusammengesetzten Schlüssel — stutz oder kürz die Segmente, aus denen ein mit # verbundener Sort Key besteht.
  4. Zieh übergroße Inhalte aus dem Schlüssel in ein normales Attribut (das nur ins 400-KB-Item-Limit passen muss).
  5. Zähl UTF-8-Bytes, nicht Zeichen. Emoji und CJK-Text wachsen schnell — ein String mit 500 Zeichen kann 2048 Byte überschreiten.

Aus DynoTable verbinden

Paste draft key values into the Item-Size-Rechner and check byte counts against the 2048/1024 limits bevor du write. In DynoTable, staging (⌘S) catches oversized keys on test items opened with ⌘K.

When shortening composite keys, prototype queries in the Query Builder. Wechsle Profile mit ⌘P; Verbindung testen on 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.