Limite de 10 Go des collections d'éléments d'un LSI DynamoDB
En bref — Sur une table dotée d'un index secondaire local, une collection d'éléments — tous les éléments partageant une même clé de partition, plus leurs projections LSI — peut totaliser au plus 10 Go. Seules les tables avec LSI ont ce plafond, car chaque collection d'éléments doit tenir sur une seule partition. Une écriture qui ferait passer une collection au-delà de 10 Go échoue avec ItemCollectionSizeLimitExceededException. Surveille ItemCollectionMetrics, re-partitionne la clé qui grossit, ou remplace le LSI par un GSI (qui n'a pas une telle limite).
Ce que ça signifie
ItemCollectionSizeLimitExceededException: Collection size exceeded.Une collection d'éléments est l'ensemble de tous les éléments ayant la même valeur de clé de partition dans la table et dans tous ses LSI. Lorsqu'une table a un LSI, DynamoDB stocke chaque collection d'éléments sur une seule partition, si bien que la collection est bornée par la capacité de 10 Go de cette partition. Une table sans LSI n'a pas de limite de taille par collection (et les GSI n'en ont pas non plus). Cette erreur est donc le signe que les données d'une clé de partition ont grossi sans borne sous un LSI. C'est un HTTP 400 ; AWS le liste comme réessayable, mais un nouvel essai ne réussit qu'après que la collection a rétréci — les lectures et les écritures qui réduisent la taille (suppressions, retrait d'attributs) restent autorisées.
Pourquoi ça arrive
- Une clé de partition sans borne — un gros locataire, un utilisateur très actif, ou un journal en ajout continu qui écrivent tous sous une même clé.
- Le LSI lui-même — le plafond de 10 Go existe uniquement parce que la table a un LSI (créé au moment de la création de la table et non supprimable).
- Des projections LSI larges — projeter de nombreux attributs dans le LSI gonfle la collection plus vite.
- Une croissance régulière qui a approché discrètement 10 Go jusqu'à ce qu'une écriture finisse par franchir la limite.
Comment le corriger
- Re-partitionne la clé de partition. Répartis l'entité surdimensionnée sur plusieurs clés (
TENANT#42#1,TENANT#42#2, …) pour qu'aucune collection ne grossisse sans borne. - 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 convient mieux, et il peut être ajouté/supprimé après la création de la table (un LSI ne le peut pas).
- Réduis les projections LSI — projette moins d'attributs (
KEYS_ONLY/INCLUDE) pour ralentir la croissance de la collection si tu dois conserver le LSI. - Archive les éléments froids hors de la collection active vers une table séparée ou S3.
- Surveille avant d'atteindre le mur. Active
ReturnItemCollectionMetrics: SIZEsur les écritures (PutItem,UpdateItem,DeleteItem,BatchWriteItem,TransactWriteItems) ; DynamoDB renvoie une estimationSizeEstimateRangeGB, et AWS recommande d'alerter à un seuil défini par l'utilisateur (8 Go, par exemple) pour agir avant 10 Go.
En train de remanier clés et index pour échapper à la limite du LSI ? L'application de bureau DynoTable te permet de filtrer par clé de partition afin de voir quelle collection est surdimensionnée avant de re-partitionner.
Depuis DynoTable
Repère la clé de partition qui approche des 10 Go — ouvre la table avec ⌘K, trie par clé de partition, et compte les éléments par collection. Le calculateur de taille d'élément estime la croissance quand de larges projections de LSI gonflent les collections.
Compare le coût d'écriture d'un LSI à une migration vers un GSI avec le calculateur de tarifs. Change de profil avec ⌘P ; vois Se connecter à AWS et Installation.
Sources
- Local secondary indexes (vérifié le 2026-07-13)
- PutItem — Amazon DynamoDB API Reference (vérifié le 2026-07-13)
Erreurs liées
- ItemCollectionSizeLimitExceededException — la même exception, avec le cadrage général de la capacité.
- Item size has exceeded the maximum allowed size — le plafond distinct de 400 Ko par élément.
- Apprends : Collections d'éléments · GSI vs LSI · Index
Références
- Local secondary indexes — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- PutItem — Amazon DynamoDB API Reference
Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.