Los niveles de anidamiento han excedido los límites admitidos
TL;DR — DynamoDB le permite anidar tipos de documentos (mapa M y lista L) uno dentro del otro hasta 32 niveles de profundidad. Una estructura que va más profunda se rechaza con un ValidationException. Aplane el modelo de datos, divida la rama profunda en un elemento separado o almacene el subárbol demasiado profundo como una única cadena serializada.
Qué significa
ValidationException: 1 validation error detected: Nesting Levels have exceeded supported limits
# what the engine actually returns, reproduced against DynamoDB Local:
ValidationException: 1 validation error detected: Nesting Levels have exceeded supported limits: Attributes in the item have nested levels beyond supported limit(Esa es la redacción que AWS documenta para este fallo de validación; el texto exacto puede variar ligeramente según la operación.) El valor de un atributo puede ser un escalar, o un map/list que a su vez contiene más valores — y DynamoDB limita ese anidamiento a 32 niveles. El mismo techo se aplica a las expresiones: la profundidad máxima de una ruta de documento es 32, así que tampoco puedes referenciar más profundo que eso. El límite cuenta la profundidad de los mapas y las listas, no el número de atributos. Superarlo es un ValidationException HTTP 400, detectado en el momento de la validación, y no reintentable hasta que el documento se reestructure.
Por qué ocurre
- Datos profundamente recursivos — estructuras de árbol/grafo (organigramas, hilos de comentarios, categorías anidadas) serializadas como mapas dentro de mapas más allá de 32 niveles.
- Un serializador genérico — código que marshalliza JSON anidado arbitrario directamente a tipos de documento de DynamoDB sin una protección de profundidad.
- Autoanidamiento accidental — un error que envuelve un Item dentro de sí mismo repetidamente.
- Documentos migrados desde una base de datos documental cuyo anidamiento nunca estuvo acotado.
Cómo solucionarlo
- Aplana el modelo — eleva las subestructuras profundas a atributos de nivel superior o a un diseño de clave compuesta en lugar de mapas cada vez más profundos.
- Divide en varios Items — modela la rama profunda como Items separados bajo la misma clave de partición (el patrón de adyacencia de tabla única).
- Serializa el subárbol profundo — almacena la parte demasiado profunda como un único atributo de cadena JSON (opaco para DynamoDB, así que su profundidad interna deja de contar) si no necesitas consultarlo.
- Añade una protección de profundidad en tu capa de marshalling para que los documentos no puedan crecer en silencio más allá del límite.
- Mide la profundidad antes de escribir. Recorre el árbol del documento en tu serializador y rechaza cualquier cosa por encima de 30 niveles — deja margen para una ruta de actualización más.
Mídelo en DynoTable
Inspecciona los atributos anidados en DynoTable antes de escribirlos — abre un Item con ⌘K y despliega los campos de mapa/lista en el visor JSON para ver hasta dónde llega la estructura. El staging (⌘S) te deja previsualizar un put/update y detectar errores de profundidad antes de confirmar.
Usa la calculadora de tamaño de Item junto con las comprobaciones de profundidad — un anidamiento profundo también suele empujar los Items hacia el tope de 400 KB. Cambia de perfil con ⌘P cuando pruebes contra Local frente a AWS. Configuración: Conectar con AWS, Instalación.
Fuentes
- Constraints in Amazon DynamoDB (verificado 2026-07-13)
- Referring to item attributes when using expressions (verificado 2026-07-13)
Errores relacionados
- Item size has exceeded the maximum allowed size — el límite aparte de 400 KB para el Item completo.
- An expression attribute name used in the document path is not defined — un error de referencia en la ruta de documento.
- ValidationException (resumen)
- Aprende: DynamoDB data types
Referencias
- Constraints in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- TransactWriteItems — Amazon DynamoDB API Reference
- Referring to item attributes when using expressions in DynamoDB — Amazon DynamoDB Developer Guide
- Error handling with DynamoDB — Amazon DynamoDB Developer Guide
Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.