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

  1. 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.
  2. 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).
  3. 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.
  4. Adicione uma proteção de profundidade em sua camada de empacotamento para que os documentos não possam crescer silenciosamente além do limite.
  5. 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

Erros relacionados

Referências

Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.