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: 27785A 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 ValidationException — nã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
UpdateExpressiongerado automaticamente em um item largo — um ORM/mapper emiteSET #a0 = :v0, #a1 = :v1, …para cada atributo, e os nomes dos espaços reservados + separadores ultrapassam 4 KB.- Um enorme
FilterExpression— umattr IN (:0, :1, …)longo ou uma cadeia de condiçõesORed. - Gravações condicionais em massa com muitos
attribute_not_exists/comparisons em umConditionExpression. - Edições de console de itens grandes — salvar um item grande reemite uma grande expressão update/condition.
Como corrigir
- Atualize apenas o que mudou. Construa o
UpdateExpressiona partir do diff, não do item inteiro – a maioria das atualizações aborda alguns atributos. - Encurte nomes de espaços reservados.
#a/:vsuperam nomes descritivos longos; o comprimento que conta é a string de expressão, portanto, nomes mais concisos ganham espaço real. - 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). - 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.
- Reduza o aninhamento — caminhos de mapa profundamente aninhados aumentam o comprimento da expressão; alise onde puder.
- Cap
INlista 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
- Restrições no Amazon DynamoDB (verificado em 13/07/2026)
- Usando expressões de atualização em DynamoDB (verificado em 13/07/2026)
Erros relacionados
- O tamanho do item excedeu o máximo (400 KB) — o item, e não a expressão, é muito grande.
- Palavra-chave reservada no nome do atributo — por que você precisava de espaços reservados em primeiro lugar.
- Aprenda: Atualizar expressões · Estratégias de filtragem
Referências
- Restrições no Amazon DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Usando expressões de atualização 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.