DynamoDB ItemCollectionSizeLimitExceededException

TL;DR — Seules les tables dotées d'un index secondaire local (LSI) ont cette limite : tous les éléments partageant une même clé de partition (la « collection d'éléments ») peuvent totaliser au plus 10 Go. Une de tes clés de partition l'a franchie. Repense la conception pour qu'aucune clé de partition unique n'accumule des données non bornées — ou supprime le LSI.

Ce que ça signifie

ItemCollectionSizeLimitExceededException: Collection size exceeded.

Une collection d'éléments est l'ensemble des éléments ayant la même valeur de clé de partition — dans la table de base et dans tous ses LSI. Les tables sans LSI n'ont pas de plafond de taille par collection (la taille globale d'une table n'est pas contrainte). Les tables avec un LSI plafonnent chaque collection à 10 Go, et cette erreur signifie qu'une écriture pousserait une collection au-delà. La limite ne s'applique pas aux index secondaires globaux.

Elle revient en HTTP 400, et AWS l'indique comme réessayable — mais une nouvelle tentative ne réussit qu'une fois la collection redescendue sous 10 Go. Les lectures, et les écritures qui réduisent la taille de la collection (suppressions, retrait ou élagage d'attributs), restent autorisées, tu peux donc t'en extraire.

Pourquoi ça arrive

  • Une clé de partition chaude/non bornée — une clé (un gros locataire, un utilisateur populaire) accumule bien plus d'éléments que les autres.
  • Un LSI dont tu n'as peut-être pas besoin — le plafond de 10 Go n'existe que parce que la table a un LSI.
  • Croissance en ajout seul sous une seule clé de partition au fil du temps.

Comment le corriger

  1. Re-partitionne la clé de partition. Répartis l'entité surdimensionnée sur plusieurs clés de partition (par ex. TENANT#42#1, TENANT#42#2) pour qu'aucune collection unique ne grossisse de façon non bornée.
  2. Remplace le LSI par un GSI. Les GSI ont leur propre clé de partition et aucune limite de taille de collection d'éléments — pour la plupart des schémas d'accès, un GSI est de toute façon le meilleur choix (et peut être ajouté/supprimé après la création de la table, contrairement à un LSI).
  3. Archive les éléments froids hors de la collection chaude (vers une table séparée ou S3).

Repère-le dans DynoTable

Repère quelles clés de partition portent le plus d'éléments avant qu'une collection n'atteigne 10 Go — ouvre la table avec ⌘K, trie par clé de partition, et cherche les clés aux listes d'éléments anormalement longues. Le calculateur de taille d'élément aide à estimer la croissance par élément quand tu prépares un re-sharding.

Sers-toi du calculateur de tarifs pour comparer l'amplification d'écriture d'un LSI à une alternative en GSI. Change de profil avec ⌘P ; configure-les sous Settings → Profiles. Vois Se connecter à AWS et Installation.

Sources

Erreurs liées

Références

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Travaille avec DynamoDB sans la Console

Un client de bureau rapide pour DynamoDB qui exécute le vrai SQL que DynamoDB ne peut pas — JOINs, GROUP BY, agrégations — avec édition visuelle et un agent IA sur tes propres clés Bedrock.

Essai gratuit de 30 jours, sans carte bancaire — ensuite la formule Gratuit, sans limite de durée.