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

  1. 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.
  2. 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).
  3. 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.
  4. 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.
  5. 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

Errores relacionados

Referencias

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.