"Size of hashkey has exceeded the maximum size limit of 2048 bytes": la dimensione della chiave hash ha superato il limite massimo di 2048 byte

TL;DR — DynamoDB limita la lunghezza delle chiavi: un valore di chiave di partizione (hash) può essere al massimo 2048 byte e un valore di chiave di ordinamento (intervallo) al massimo di 1024 byte, misurati come byte UTF-8 (o binario non elaborato). Una scrittura la cui chiave supera il limite viene rifiutata. Accorcia la chiave: esegui l'hash di valori lunghi o sposta i dati voluminosi in un attributo non chiave.

Cosa significa

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

(Sì, lo spazio mancante in "of2048" è nel messaggio effettivo del servizio.) Gli attributi chiave sono indicizzati e partizionati fisicamente da DynamoDB, quindi la loro lunghezza è molto inferiore al limite di elementi di 400 KB. Il valore della chiave di partizione deve essere da 1 a 2048 byte e il valore della chiave di ordinamento da 1 a 1024 byte. Il conteggio dei byte corrisponde alla dimensione codificata (UTF-8 per le stringhe, byte grezzi per i binari): i caratteri multibyte contano per più di uno. Si tratta di una ValidationException HTTP 400, lato client, non riproducibile finché la chiave non si riduce.

Perché succede

  • Una stringa lunga come chiave di partizione: un URL, un documento completo, un BLOB codificato o una chiave composita concatenata utilizzata direttamente come valore della chiave.
  • Una chiave di ordinamento composita dettagliata: molti segmenti uniti con # che insieme superano 1024 byte.
  • Base64 / dati serializzati in una chiave: la codifica aumenta il conteggio dei byte oltre il limite.
  • Testo multibyte: contenuto non ASCII la cui codifica UTF-8 è maggiore di quanto suggerito dal conteggio dei caratteri.

Come risolverlo

  1. Hash del valore lungo: memorizza un digest deterministico (ad esempio SHA-256, ~32 byte) come chiave e mantieni il valore completo in un attributo non chiave separato.
  2. Scegli una chiave più compatta: un identificatore naturale più breve invece del campo voluminoso.
  3. Abbrevia la chiave composita: taglia o abbrevia i segmenti che compongono una chiave di ordinamento unita a #.
  4. Spostare i contenuti di grandi dimensioni fuori dalla chiave in un attributo regolare (che deve soddisfare solo il limite di elementi di 400 KB).
  5. Conta i byte UTF-8, non i caratteri. Il testo emoji e CJK si espande rapidamente: una stringa di 500 caratteri può superare i 2048 byte.

Connettiti da DynoTable

Incolla la bozza dei valori chiave nel calcolatore della dimensione dell'elemento e controlla il conteggio dei byte rispetto ai limiti 2048/1024 prima di scrivere. In DynoTable, la gestione temporanea (⌘S) rileva chiavi di grandi dimensioni su elementi di test aperti con ⌘K.

Quando si accorciano le chiavi composite, prototipare le query nel Builder di query. Cambia profilo con ⌘P; Verifica connessione in Impostazioni → Profili. Consulta Connetti a AWS e Installa.

Fonti

Errori correlati

Riferimenti

Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.