DynamoDB ItemCollectionSizeLimitExceededException
TL;DR: solo las tablas con un índice secundario local (LSI) tienen este límite: todos los elementos que comparten una clave de partición (la "colección de elementos") pueden sumar como máximo 10 GB. Una de tus claves de partición la cruzó. Rediseñe para que ninguna clave de partición única acumule datos ilimitados, o elimine la LSI.
Qué significa
ItemCollectionSizeLimitExceededException: Collection size exceeded.Una colección de Items es cada Item con el mismo valor de clave de partición — en la tabla base y en todos sus LSI. Las tablas sin un LSI no tienen límite de tamaño por colección (el tamaño global de una tabla no está restringido). Las tablas con un LSI limitan cada colección a 10 GB, y este error significa que una escritura empujaría una colección por encima de eso. El límite no se aplica a los índices secundarios globales.
Vuelve como HTTP 400, y AWS lo lista como reintentable — pero un reintento solo tiene éxito una vez que la colección ha vuelto a encoger por debajo de 10 GB. Las lecturas, y las escrituras que reducen el tamaño de la colección (borrados, eliminar o recortar atributos), siguen permitidas, así que puedes ir saliendo del problema.
Por qué ocurre
- Una clave de partición caliente/sin límite — una clave (un inquilino grande, un usuario popular) acumula muchos más Items que las demás.
- Un LSI que quizá no necesites — el límite de 10 GB existe solo porque la tabla tiene un LSI.
- Crecimiento de solo-adición bajo una única clave de partición con el tiempo.
Cómo solucionarlo
- Vuelve a fragmentar la clave de partición. Divide la entidad sobredimensionada entre varias claves de partición (p. ej.
TENANT#42#1,TENANT#42#2) para que ninguna colección crezca sin límite. - Reemplaza el LSI por un GSI. Los GSI tienen su propia clave de partición y ningún límite de tamaño de colección de Items — para la mayoría de los patrones de acceso un GSI es la mejor opción de todos modos (y puede añadirse/eliminarse tras la creación de la tabla, a diferencia de un LSI).
- Archiva los Items fríos fuera de la colección caliente (a una tabla separada o a S3).
- Vigila el tamaño de la colección antes de chocar con el muro.
ReturnItemCollectionMetrics: SIZEen las escrituras devuelve el tamaño estimado de la colección, así que puedes alertar antes de que las escrituras fallen.
Detéctalo en DynoTable
Descubre qué claves de partición cargan con más Items antes de que una colección llegue a los 10 GB — abre la tabla con ⌘K, ordena por clave de partición y busca claves con listas de Items inusualmente largas. La calculadora de tamaño de Item ayuda a estimar el crecimiento por Item cuando planificas una refragmentación.
Usa la calculadora de precios para comparar la amplificación de escritura de un LSI frente a la alternativa con GSI. Cambia de perfil con ⌘P; configúralos en Settings → Profiles. Consulta Conectar con AWS e Instalación.
Fuentes
- Local secondary indexes (verificado 2026-07-13)
- Error handling with DynamoDB (verificado 2026-07-13)
Errores relacionados
- Item size has exceeded the maximum allowed size — el límite por Item de 400 KB.
- ProvisionedThroughputExceededException
- Aprende: GSI vs LSI · Colecciones de Items
Referencias
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
- Local secondary indexes — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.