"Size of hashkey has exceeded the maximum size limit of 2048 bytes": chave grande demais
TL;DR — DynamoDB limita comprimentos de chave: um valor de chave de partição (hash) pode ter no máximo 2.048 bytes e um valor de chave de classificação (intervalo) de no máximo 1.024 bytes, medidos como bytes UTF-8 (ou binário bruto). Uma gravação cuja chave excede o limite é rejeitada. Encurte a chave - faça hash de valores longos ou mova os dados volumosos para um atributo não-chave.
O que significa
ValidationException: One or more parameter values were invalid: Size of hashkey has exceeded the maximum size limit of2048 bytes
# sort-key variant:
ValidationException: One or more parameter values were invalid: Aggregated size of all range keys has exceeded the size limit of 1024 bytes
# on DynamoDB Local you get one combined sentence instead, naming neither key:
ValidationException: Hash primary key values must be under 2048 bytes, and range primary key values must be under 1024 bytes(Sim, o espaço que falta em "of2048" está na mensagem real do serviço.) Os atributos principais são indexados e particionados fisicamente pelo DynamoDB, portanto, seu comprimento é limitado muito abaixo do limite de item de 400 KB. O valor da chave de partição deve ser 1 a 2.048 bytes e o valor da chave de classificação 1 a 1.024 bytes. A contagem de bytes é o tamanho codificado (UTF-8 para strings, bytes brutos para binários) — caracteres multibyte contam para mais de um. É um HTTP 400 ValidationException, do lado do cliente, que não pode ser repetido até que a chave diminua.
Por que isso acontece
- Uma string longa como chave de partição — um URL, documento completo, blob codificado ou chave composta concatenada usada diretamente como o valor da chave.
- Uma chave de classificação composta detalhada — muitos segmentos unidos com
#que juntos excedem 1.024 bytes. - Base64/dados serializados em uma chave — a codificação aumenta a contagem de bytes além do limite.
- Texto multibyte — conteúdo não ASCII cuja codificação UTF-8 é maior do que a contagem de caracteres sugere.
Como corrigir
- Hash do valor longo — armazene um resumo determinístico (por exemplo, SHA-256, ~32 bytes) como a chave e mantenha o valor completo em um atributo não-chave separado.
- Escolha uma chave mais compacta — um identificador natural mais curto em vez do campo volumoso.
- Encurte a chave composta — corte ou abrevie os segmentos que compõem uma chave de classificação unida por
#. - Mova o conteúdo superdimensionado da chave para um atributo regular (que só precisa caber no limite de item de 400 KB).
- Conte bytes UTF-8, não caracteres. O texto Emoji e CJK se expande rapidamente – uma string de 500 caracteres pode exceder 2.048 bytes.
Conecte pelo DynoTable
Cole os valores da chave de rascunho na calculadora de tamanho do item e verifique as contagens de bytes em relação aos limites 2048/1024 antes de escrever. No DynoTable, o teste (⌘S) captura chaves grandes em itens de teste abertos com ⌘K.
Ao encurtar chaves compostas, crie protótipos de consultas no Query Builder. Alternar perfis com ⌘P; Testar conexão em Configurações → Perfis. Consulte Conectar ao AWS e Instalar.
Fontes
- Restrições no Amazon DynamoDB (verificado em 13/07/2026)
- Tipos de dados e regras de nomenclatura suportados (verificado em 13/07/2026)
Erros relacionados
- O tamanho do item excedeu o tamanho máximo permitido — o limite de item inteiro de 400 KB (vs. o limite por chave).
- O tamanho do item a ser atualizado excedeu o tamanho máximo permitido — um limite de tamanho chave/index durante uma atualização.
- ValidationException (visão geral)
- Aprenda: Tamanho do item e limite de 400 KB · Chaves primárias compostas
Referências
- Restrições no Amazon DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Tipos de dados e regras de nomenclatura compatíveis no Amazon 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.