O tamanho da expressão excedeu o tamanho máximo permitido

TL;DR — DynamoDB limita qualquer string de expressão única a 4 KB (os parâmetros de expressão: UpdateExpression, ConditionExpression, FilterExpression, ProjectionExpression). O seu superou isso – geralmente uma atualização gerada automaticamente sobre um item grande ou um filtro IN (…) / OR gigante. Reduza a expressão, não o item.

O que significa

ValidationException: 1 validation error detected: Invalid ConditionExpression: Expression size has exceeded the maximum allowed size; expression size: 27785

A contagem de bytes finais é o tamanho medido da sua expressão, por isso difere em cada solicitação.

O limite de 4 KB está no comprimento da própria string de expressão, independente do tamanho de 400 KB do item. Um item com menos de 400 KB ainda pode estourar o orçamento da expressão se o SDK criar uma cláusula por atributo (nomes detalhados de espaços reservados aumentam rapidamente). É um HTTP 400 ValidationExceptionnão é possível tentar novamente sem alterar a expressão.

O orçamento de expressão tem irmãos que você pode atingir primeiro: cada espaço reservado #name/:value é limitado a 255 bytes, o ExpressionAttributeNames + ExpressionAttributeValues combinado a 2 MB, uma única expressão a 300 operadores /functions e um comparador IN a 100 operandos.

Por que isso acontece

  • UpdateExpression gerado automaticamente em um item largo — um ORM/mapper emite SET #a0 = :v0, #a1 = :v1, … para cada atributo, e os nomes dos espaços reservados + separadores ultrapassam 4 KB.
  • Um enorme FilterExpression — um attr IN (:0, :1, …) longo ou uma cadeia de condições ORed.
  • Gravações condicionais em massa com muitos attribute_not_exists/comparisons em um ConditionExpression.
  • Edições de console de itens grandes — salvar um item grande reemite uma grande expressão update/condition.

Como corrigir

  1. Atualize apenas o que mudou. Construa o UpdateExpression a partir do diff, não do item inteiro – a maioria das atualizações aborda alguns atributos.
  2. Encurte nomes de espaços reservados. #a/:v superam nomes descritivos longos; o comprimento que conta é a string de expressão, portanto, nomes mais concisos ganham espaço real.
  3. Divida um filtro gigante em consultas mais restritas ou reestruture para que o filtro não seja necessário (uma chave/index melhor significa menos condições ORed).
  4. Divida uma gravação superdimensionada em várias atualizações menores ou modele o item para que uma única alteração lógica não reescreva tudo.
  5. Reduza o aninhamento — caminhos de mapa profundamente aninhados aumentam o comprimento da expressão; alise onde puder.
  6. Cap IN lista 100 operandos. Esse é um limite documentado separado que pode falhar antes do limite de string de 4 KB.

Pelo DynoTable

O DynoTable cria expressões de atualização a partir dos campos que você realmente altera - não de todos os atributos do item - mantendo as expressões bem abaixo de 4 KB. Abra um item com ⌘K, edite campos específicos e copie o comprimento da string de expressão gerada.

Use o Expression Builder para observar o tamanho da expressão à medida que você adiciona cláusulas. A calculadora de tamanho de item ajuda quando itens largos geram atualizações geradas automaticamente. Alternar perfis com ⌘P; consulte Conectar ao AWS e 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.