Os níveis de aninhamento excederam os limites suportados
TL;DR — DynamoDB permite aninhar tipos de documentos (mapear M e listar L) uns dentro dos outros até 32 níveis de profundidade. Uma estrutura mais profunda é rejeitada com um ValidationException. Achate o modelo de dados, divida a ramificação profunda em um item separado ou armazene a subárvore muito profunda como uma única string serializada.
O que 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(Essa é a redação dos documentos AWS para esta falha de validação; a frase exata pode variar ligeiramente de acordo com a operação.) Um valor de atributo pode ser um escalar ou um map/list que contém mais valores - e o DynamoDB limita esse aninhamento em 32 níveis. O mesmo limite se aplica às expressões: a profundidade máxima para um caminho de documento é 32, portanto você também não pode fazer referências mais profundas do que isso. O limite conta a profundidade dos mapas e listas, não o número de atributos. Excedê-lo é um HTTP 400 ValidationException, capturado no momento da validação e não pode ser repetido até que o documento seja reestruturado.
Por que isso acontece
- Dados profundamente recursivos — estruturas tree/graph (organogramas, tópicos de comentários, categorias aninhadas) serializadas como mapas dentro de mapas além de 32 níveis.
- Um serializador genérico — código que empacota JSON aninhados arbitrariamente diretamente em tipos de documentos DynamoDB sem proteção de profundidade.
- Auto-aninhamento acidental — um bug que envolve um item dentro de si repetidamente.
- Documentos migrados de um banco de dados de documentos cujo aninhamento nunca foi limitado.
Como corrigir
- Achatar o modelo — eleve subestruturas profundas em atributos de nível superior ou um layout de chave composta em vez de mapas cada vez mais profundos.
- Dividir em vários itens — modele a ramificação profunda como itens separados sob a mesma chave de partição (o padrão de adjacência de tabela única).
- Serializar a subárvore profunda — armazene a parte excessivamente profunda como um atributo de string JSON (opaco para DynamoDB, para que sua profundidade interna não conte mais) se você não precisar consultá-la.
- Adicione uma proteção de profundidade em sua camada de empacotamento para que os documentos não possam crescer silenciosamente além do limite.
- Meça a profundidade antes de escrever. Percorra a árvore do documento em seu serializador e rejeite qualquer coisa acima de 30 níveis — deixe espaço para mais um caminho de atualização.
Meça no DynoTable
Inspecione os atributos aninhados no DynoTable antes de escrevê-los - abra um item com ⌘K e expanda os campos map/list no visualizador JSON para ver a profundidade da execução da estrutura. O teste (⌘S) permite visualizar um put/update e detectar erros de profundidade antes do commit.
Use a calculadora de tamanho de item juntamente com verificações de profundidade – o aninhamento profundo geralmente também empurra os itens para o limite de 400 KB. Alterne perfis com ⌘P ao testar em Local vs AWS. Configuração: Conectar ao AWS, Instalar.
Fontes
- Restrições no Amazon DynamoDB (verificado em 13/07/2026)
- Referindo-se aos atributos do item ao usar expressões (verificado em 13/07/2026)
Erros relacionados
- O tamanho do item excedeu o tamanho máximo permitido — o limite separado de 400 KB para o item inteiro.
- Um nome de atributo de expressão usado no caminho do documento não está definido — um erro de referência do caminho do documento.
- ValidationException (visão geral)
- Aprenda: tipos de dados DynamoDB
Referências
- Restrições no Amazon DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- TransactWriteItems — Referência do Amazon DynamoDB API
- Referindo-se aos atributos do item ao usar expressões no DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Tratamento de erros com DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.