Muitos itens solicitados para a chamada BatchWriteItem
TL;DR — BatchWriteItem aceita no máximo 25 ações put/delete por chamada (e ≤16 MB no total). Você enviou mais de 25, então DynamoDB rejeitou toda a solicitação. Divida seus itens em pedaços de 25 ou menos e emita um BatchWriteItem por pedaço.
O que significa
ValidationException: 1 validation error detected: Value '<your request>' at 'requestItems' failed to satisfy constraint: Map value must satisfy constraint: [Member must have length less than or equal to 25, Member must have length greater than or equal to 1]
# on DynamoDB Local the same call is rejected with a shorter sentence:
ValidationException: Too many items requested for the BatchWriteItem callO serviço ecoa toda a sua solicitação serializada onde está o <your request> – cerca de 12.000 caracteres para um lote de 26 itens.
O BatchWriteItem agrupa ações PutRequest/DeleteRequest individuais em uma ou mais tabelas, mas uma única chamada tem um limite máximo de 25 ações e 16 MB de dados. Ultrapasse qualquer um dos limites e o DynamoDB rejeitará toda a solicitação antes de escrever qualquer coisa. É um HTTP 400 ValidationException, do lado do cliente e não pode ser tentado novamente até que você redimensione o lote.
Por que isso acontece
- Escrever uma coleção grande em uma chamada — passando uma série de centenas de itens diretamente para o
BatchWriteItemsem agrupamento. - Um chunk loop com o limite errado — lote por contagem, mas usando um limite acima de 25, ou um off-by-one que permite a passagem de 26.
- Contando tabelas, não ações — o limite de 25 é o total de ações em todas as tabelas da solicitação, não por tabela.
- Carga útil superdimensionada — mesmo com ≤25 ações, todo o lote será rejeitado se qualquer item único exceder 400 KB ou a solicitação total exceder 16 MB.
Como corrigir
- Divida em grupos de ≤25 ações e envie um
BatchWriteItempor bloco. - Handle
UnprocessedItems—BatchWriteItempode retornar itens que não processou (aceleração); tente novamente aqueles com espera exponencial. Isso é normal mesmo dentro de um lote válido de 25 itens. - Mantenha cada lote com menos de 16 MB — com itens grandes, você pode precisar de menos de 25 por chamada.
- Use um auxiliar que faça buffer para você — os pedaços
Table.batch_writer()do boto3 gravam e reenviam itens não processados automaticamente (o cliente aprimorado do Java SDK / v1 DynamoDBMapper também tenta novamente itens não processados). Os clientes de baixo nível e o cliente de documento JavaScript não dividem um lote muito grande. - Dimensione cada bloco em bytes e também em contagem. Vinte e cinco itens grandes podem exceder 16 MB mesmo quando a contagem de ações é válida.
Meça no DynoTable
Antes de carregar os dados em massa, verifique os tamanhos dos itens no DynoTable - abra um item de amostra com ⌘K e confirme se cada um cabe abaixo de 400 KB. A calculadora de tamanho de item estima o tamanho da carga útil do lote para que você escolha um tamanho de bloco seguro antes que seu carregador seja executado.
Use o teste (⌘S) para testar uma gravação em lote pequeno em uma tabela de desenvolvimento antes de executar a importação completa. Alternar perfis com ⌘P; configure-os em Configurações → Perfis com Conexão de teste. Consulte Conectar ao AWS e Instalar.
Fontes
- BatchWriteItem — Referência Amazon DynamoDB API (verificado em 13/07/2026)
- Amazon DynamoDB — guia AWS SDK para Python (Boto3) (verificado em 13/07/2026)
Erros relacionados
- Muitos itens solicitados para a chamada BatchGetItem — o limite de leitura (100 itens).
- A lista fornecida de chaves de item contém duplicatas — a mesma chave duas vezes em um BatchWriteItem.
- ProvisionedThroughputExceededException — limitação que surge como UnprocessedItems.
- Exemplo de código: BatchWriteItem em Node.js · em Python (boto3) — escritas em partes com nova tentativa de UnprocessedItems.
- Aprenda: operações em lote DynamoDB
Referências
- BatchWriteItem — Referência do Amazon DynamoDB API
- BatchGetItem — Referência do Amazon DynamoDB API
- Tratamento de erros com DynamoDB — Guia do desenvolvedor do Amazon DynamoDB
- Amazon DynamoDB — Guia do SDK AWS para Python (Boto3)
Última verificação em 13/07/2026 em relação à documentação oficial do AWS vinculada acima.