"Too Many Items": muitos itens solicitados para a chamada BatchGetItem
TL;DR — BatchGetItem recupera no máximo 100 itens por chamada (e ≤16 MB de dados). Você solicitou mais de 100 chaves, então DynamoDB rejeitou a solicitação. Divida suas chaves em blocos de 100 ou menos e emita um BatchGetItem por bloco.
O que significa
ValidationException: 1 validation error detected: Value at 'RequestItems.<table-name>.member.Keys' failed to satisfy constraint: Member must have length less than or equal to 100
# on DynamoDB Local the same call is rejected with a shorter sentence:
ValidationException: Too many items requested for the BatchGetItem callBatchGetItembusca itens por chave primária em uma ou mais tabelas, mas uma única chamada é limitada a **100 chaves** e **16 MB** de dados retornados. Solicite mais de 100 e o DynamoDB rejeitará toda a chamada. Mesmo dentro do limite, uma resposta pode retornar menos itens do que o solicitado (teto de 16 MB), reportando o restante emUnprocessedKeys. O caso acima do limite é um HTTP 400 ValidationException`, que não pode ser repetido até ser redimensionado.
Por que isso acontece
- Solicitando um grande conjunto de chaves em uma chamada — passando centenas de chaves diretamente para o
BatchGetItem. - Um pedaço vinculado acima de 100 — lote por contagem, mas usando o irmão do limite BatchWrite de 25 itens incorretamente ou um intervalo por um, deixando 101 passar.
- Contando tabelas, não chaves — o limite de 100 é o total de chaves em todas as tabelas da solicitação.
- Sem paginação
UnprocessedKeys— assumindo que uma chamada retorna tudo, então você nunca fragmenta.
Como corrigir
- Agrupe as chaves em grupos de ≤100 e envie um
BatchGetItempor bloco. - Handle
UnprocessedKeys— tente novamente qualquer chave retornada com espera exponencial; isso acontece mesmo dentro de um lote válido de 100 chaves quando o limite de 16 MB é atingido. - Mantenha as respostas abaixo de 16 MB — com itens grandes, solicite menos de 100 por chamada.
- Saiba o que seu SDK faz por você — os clientes de baixo nível e o cliente de documento JavaScript não dividem uma lista de chaves muito grande; você mesmo deve chegar a 100. Alguns clientes de nível superior (o cliente aprimorado do Java SDK e v1 DynamoDBMapper) tentam pelo menos repetir itens não processados automaticamente.
- Desduplicar chaves antes da fragmentação. Chaves duplicadas em um lote falham separadamente – desduplicar primeiro e depois fragmentar.
Reproduza
Um BatchGetItem pedindo 101 chaves, uma além do limite:
const Keys = Array.from({length: 101}, (_, i) => ({pk: {S: `K#${i}`}, sk: {S: 'META'}}));
await client.send(new BatchGetItemCommand({RequestItems: {orders: {Keys}}}));Este falha rapidamente no formato da solicitação – nenhuma leitura parcial acontece e nada chega ao UnprocessedKeys. Essa é a diferença entre exceder o limite de 100 chaves e exceder o limite de resposta de 16 MB, o que retorna resultados parciais.
Pelo DynoTable
Leia em lote menos de 100 chaves por vez no DynoTable enquanto você depura - abra a tabela com ⌘K, filtre para seu conjunto de chaves e confirme se os itens existem antes de conectar o BatchGetItem fragmentado no código. A calculadora de tamanho de item ajuda a escolher um tamanho de pedaço seguro quando os itens são grandes.
Use o Query Builder para criar primeiro o protótipo de leituras de chave única. Alternar perfis com ⌘P; Testar conexão em Configurações → Perfis. Consulte Conectar ao AWS e Instalar.
Fontes
- BatchGetItem — Referência Amazon DynamoDB API (verificado em 13/07/2026)
- Cotas no Amazon DynamoDB (verificado em 13/07/2026)
Erros relacionados
- Muitos itens solicitados para a chamada BatchWriteItem — o limite de gravação (25 itens).
- A lista fornecida de chaves de item contém duplicatas — a mesma chave duas vezes em um BatchGetItem.
- ProvisionedThroughputExceededException — limitação que surge como UnprocessedKeys.
- Exemplo de código: BatchGetItem em Node.js · em Python (boto3) — leituras fragmentadas com nova tentativa de UnprocessedKeys.
- Aprenda: operações em lote DynamoDB
Referências
- BatchGetItem — Referência do Amazon DynamoDB API
- BatchWriteItem — Referência do Amazon DynamoDB API
- Tratamento de erros com DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Cotas no Amazon DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.
Reproduzido em 26/07/2026 em DynamoDB Local 2.x com AWS SDK para JavaScript v3.1095.0 - a saída acima é literal.
ValidationException: Too many items requested for the BatchGetItem call
HTTP 400