"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

  1. 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.
  2. Escolha uma chave mais compacta — um identificador natural mais curto em vez do campo volumoso.
  3. Encurte a chave composta — corte ou abrevie os segmentos que compõem uma chave de classificação unida por #.
  4. Mova o conteúdo superdimensionado da chave para um atributo regular (que só precisa caber no limite de item de 400 KB).
  5. 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

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.