La dimensione dell'espressione ha superato la dimensione massima consentita
TL;DR — DynamoDB limita ogni singola stringa di espressione a 4 KB (i parametri dell'espressione: UpdateExpression, ConditionExpression, FilterExpression, ProjectionExpression). Il tuo è andato oltre: di solito un aggiornamento generato automaticamente su un oggetto di grandi dimensioni o un gigantesco filtro "IN (...)" / "OR". Riduci l'espressione, non l'oggetto.
Cosa significa
ValidationException: 1 validation error detected: Invalid ConditionExpression: Expression size has exceeded the maximum allowed size; expression size: 27785Il conteggio dei byte finali corrisponde alla dimensione misurata dell'espressione, quindi è diverso per ogni richiesta.
Il limite di 4 KB corrisponde alla lunghezza della stringa dell'espressione stessa, indipendentemente dalla dimensione di 400 KB dell'elemento. Un elemento ben inferiore a 400 KB può comunque eccedere il budget dell'espressione se l'SDK crea una clausola per attributo (i nomi dei segnaposto dettagliati si sommano rapidamente). Si tratta di una ValidationException HTTP 400 — non riprovabile senza modificare l'espressione.
Il budget delle espressioni ha fratelli che puoi colpire per primi: ogni segnaposto #name/:value ha un limite di 255 byte, la combinazione di "ExpressionAttributeNames" + "ExpressionAttributeValues" a 2 MB, una singola espressione a 300 operatori/funzioni e un comparatore "IN" a 100 operandi.
Perché succede
UpdateExpressiongenerato automaticamente su un elemento ampio — un ORM/mapper emetteSET #a0 = :v0, #a1 = :v1, …per ogni attributo e i nomi dei segnaposto + i separatori attraversano 4 KB.- Un'enorme
FilterExpression: un lungoattr IN (:0, :1, …)o una catena di condizioniOR. - Scritture condizionali in blocco con molti
attribute_not_exists/confronti in unaConditionExpression. - Modifiche da console di elementi di grandi dimensioni: il salvataggio di un elemento di grandi dimensioni ripropone un'espressione di aggiornamento/condizione di grandi dimensioni.
Come risolverlo
- Aggiorna solo ciò che è cambiato. Costruisci
UpdateExpressiondalle differenze, non dall'intero elemento: la maggior parte degli aggiornamenti tocca una manciata di attributi. - Abbreviare i nomi dei segnaposto.
#a/:vsostituisce i nomi descrittivi lunghi; la lunghezza che conta è la stringa dell'espressione, quindi i nomi concisi acquistano un vero margine. - Dividi un filtro gigante in query più ristrette o ristrutturalo in modo che il filtro non sia necessario (una chiave/indice migliore significa meno condizioni
OR). - Dividi una scrittura di grandi dimensioni in diversi aggiornamenti più piccoli o modella l'elemento in modo che un singolo cambiamento logico non riscriva tutto.
- Riduci la nidificazione: i percorsi della mappa profondamente nidificati aumentano la lunghezza dell'espressione; appiattisci dove puoi.
- Cap
INelenca a 100 operandi. Questo è un limite documentato separato che può fallire prima del limite di stringa di 4 KB.
Da DynoTable
DynoTable crea espressioni di aggiornamento dai campi effettivamente modificati, non da tutti gli attributi dell'elemento, mantenendo le espressioni ben al di sotto dei 4 KB. Apri un elemento con ⌘K, modifica campi specifici e copia la lunghezza della stringa dell'espressione generata.
Utilizza il Generatore di espressioni per controllare la dimensione dell'espressione mentre aggiungi clausole. Il calcolatore della dimensione dell'elemento aiuta quando gli elementi di grandi dimensioni richiedono aggiornamenti generati automaticamente. Cambia profilo con ⌘P; vedere Connetti a AWS e Installa.
Fonti
- Vincoli in Amazon DynamoDB (verificato il 13-07-2026)
- Utilizzo delle espressioni di aggiornamento in DynamoDB (verificato il 13-07-2026)
Errori correlati
- La dimensione dell'elemento ha superato il limite massimo (400 KB): l'elemento, non l'espressione, è troppo grande.
- Parola chiave riservata nel nome attributo - perché avevi bisogno dei segnaposto in primo luogo.
- Impara: Aggiorna espressioni · Strategie di filtro
Riferimenti
- Vincoli in Amazon DynamoDB — Guida per sviluppatori di Amazon DynamoDB
- Utilizzo delle espressioni di aggiornamento nella Guida per sviluppatori di Amazon DynamoDB DynamoDB
- Gestione degli errori con DynamoDB - Guida per sviluppatori di Amazon DynamoDB
Ultima verifica il 13-07-2026 rispetto alla documentazione ufficiale del AWS collegata sopra.