La taille de l'expression a dépassé la taille maximale autorisée
TL;DR — DynamoDB limite toute chaîne d'expression à 4 Ko (les paramètres d'expression : UpdateExpression, ConditionExpression, FilterExpression, ProjectionExpression). La tienne a dépassé cette limite — généralement une mise à jour auto-générée sur un gros élément, ou un énorme filtre IN (…) / OR. Réduis l'expression, pas l'élément.
Ce que ça signifie
ValidationException: 1 validation error detected: Invalid ConditionExpression: Expression size has exceeded the maximum allowed size; expression size: 27785Le nombre d'octets en fin de message est la taille mesurée de ton expression ; il diffère donc à chaque requête.
Le plafond de 4 Ko porte sur la longueur de la chaîne d'expression elle-même, indépendamment de la taille de 400 Ko de l'élément. Un élément bien en dessous de 400 Ko peut quand même dépasser le budget d'expression si le SDK construit une clause par attribut (les noms de placeholders verbeux s'accumulent vite). C'est une ValidationException HTTP 400 — non réessayable sans modifier l'expression.
Le budget d'expression a des limites voisines que tu peux atteindre en premier : chaque placeholder #name/:value est plafonné à 255 octets, la combinaison ExpressionAttributeNames + ExpressionAttributeValues à 2 Mo, une seule expression à 300 opérateurs/fonctions, et un comparateur IN à 100 opérandes.
Pourquoi ça arrive
- Une
UpdateExpressionauto-générée sur un élément large — un ORM/mapper émetSET #a0 = :v0, #a1 = :v1, …pour chaque attribut, et les noms de placeholders + séparateurs dépassent 4 Ko. - Une énorme
FilterExpression— un longattr IN (:0, :1, …)ou une chaîne de conditions reliées parOR. - Des écritures conditionnelles en masse avec de nombreux
attribute_not_exists/comparaisons dans une seuleConditionExpression. - Des éditions de gros éléments dans la console — enregistrer un gros élément ré-émet une grande expression de mise à jour/condition.
Comment le corriger
- Ne mets à jour que ce qui a changé. Construis l'
UpdateExpressionà partir du diff, pas de l'élément entier — la plupart des mises à jour ne touchent qu'une poignée d'attributs. - Raccourcis les noms de placeholders.
#a/:vbattent les longs noms descriptifs ; ce qui compte, c'est la longueur de la chaîne d'expression, donc des noms plus courts gagnent une vraie marge. - Découpe un filtre géant en requêtes plus étroites, ou restructure pour que le filtre soit inutile (une meilleure clé/index signifie moins de conditions reliées par
OR). - Divise une écriture surdimensionnée en plusieurs mises à jour plus petites, ou modélise l'élément pour qu'un seul changement logique ne réécrive pas tout.
- Réduis l'imbrication — les chemins de map profondément imbriqués gonflent la longueur de l'expression ; aplatis là où tu peux.
Tu surveilles la taille de l'élément et de la mise à jour ensemble ? L'application de bureau DynoTable fait apparaître les attributs de chaque élément, pour qu'il soit évident quand une mise à jour toucherait bien plus que nécessaire.
Depuis DynoTable
DynoTable construit ses expressions de mise à jour à partir des champs que tu changes réellement — pas de tous les attributs de l'élément — ce qui garde les expressions bien en dessous de 4 Ko. Ouvre un élément avec ⌘K, modifie des champs précis, et relève la longueur de la chaîne d'expression générée.
Sers-toi de l'Expression Builder pour surveiller la taille de l'expression à mesure que tu ajoutes des clauses. Le calculateur de taille d'élément aide quand des éléments larges pilotent des mises à jour générées automatiquement. Change de profil avec ⌘P ; vois Se connecter à AWS et Installation.
Sources
- Constraints in Amazon DynamoDB (vérifié le 2026-07-13)
- Using update expressions in DynamoDB (vérifié le 2026-07-13)
Erreurs liées
- Item size exceeded the maximum (400 KB) — c'est l'élément, pas l'expression, qui est trop gros.
- Reserved keyword in attribute name — pourquoi tu avais besoin de placeholders en premier lieu.
- Apprends : Update expressions · Filtering strategies
Références
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Using update expressions in DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.