Muitas ações em uma chamada TransactWriteItems
TL;DR — Uma transação DynamoDB é limitada a 100 ações. TransactWriteItems (e TransactGetItems) rejeita uma solicitação com mais de 100 ações Put/Update/Delete/ConditionCheck. Divida o trabalho em múltiplas transações — ou, se você não precisar de atomicidade do tipo tudo ou nada, use BatchWriteItem (25 por chamada).
O que significa
ValidationException: 1 validation error detected: Value '<your request>' at 'transactItems' failed to satisfy constraint: Member must have length less than or equal to 100O serviço ecoa toda a sua solicitação serializada onde o <your request> está localizado – para uma transação de 101 ações com aproximadamente 65.000 caracteres. A conclusão é a última frase.
O TransactWriteItems agrupa ações que são todas confirmadas ou revertidas juntas, mas uma única transação pode conter no máximo 100 ações, e o tamanho agregado dos itens na transação não pode exceder 4 MB. Passe mais e o DynamoDB rejeita toda a chamada antes de executar. A mensagem geralmente é lida como uma restrição no comprimento da lista TransactItems. É um HTTP 400 ValidationException, do lado do cliente e não pode ser repetido até que a transação seja menor.
Por que isso acontece
- Agrupando muitas escritas atomicamente — tentando confirmar 150 colocações em uma transação.
- Um loop que anexa ações ilimitadas a uma única lista
TransactItems. - Fan-out que excede 100 — uma operação lógica que abrange mais de 100 itens e foi modelada como uma única transação.
- Contando apenas escritas - lembre-se de que as ações do
ConditionChecktambém contam até 100.
Como corrigir
- Dividir em múltiplas transações de ≤100 ações cada — observando que cada transação é independentemente atômica (elas não são revertidas juntas).
- Reconsidere se você precisa de uma transação — se as escritas não exigirem semântica de tudo ou nada,
BatchWriteItem(≤25 por chamada) é mais barato e mais amigável em termos de rendimento. - Reduza a contagem de ações — junte múltiplas mutações em um item em um único
Updatecom umUpdateExpressioncombinado. - Modele o agregado de maneira diferente para que uma única mudança lógica afete menos itens.
- Observe o limite de tamanho agregado de item de 4 MB junto com o limite de 100 ações — itens grandes podem falhar mesmo abaixo de 100 ações.
Reproduza
Uma transação com 101 ações, uma acima do limite. A rejeição é um ValidationException simples no comprimento do array, não um erro específico da transação:
const actions = Array.from({length: 101}, (_, i) => ({
Put: {TableName: 'orders', Item: {pk: {S: `T#${i}`}, sk: {S: 'META'}}}
}));
await client.send(new TransactWriteItemsCommand({TransactItems: actions}));Observe o texto: DynamoDB rejeita isso como uma restrição de comprimento no array TransactItems, então a string que você obtém não contém nenhuma menção a transações. Obviamente, pesquisar a mensagem por si só não o levará até aqui.
Workbench do DynoTable
Antes de confirmar mais de 100 escritas atomicamente, inspecione os itens de destino em DynoTable - abra a tabela com ⌘K e confirme a existência de cada chave. O teste (⌘S) permite testar primeiro uma transação menor.
Crie atualizações de vários itens no Expression Builder e dobre ações duplicadas em uma chave em um único Update. Alternar perfis com ⌘P; consulte Conectar ao AWS e Instalar.
Fontes
- TransactWriteItems — Referência do Amazon DynamoDB API (verificado em 13/07/2026)
- Transações Amazon DynamoDB: como funciona (verificado em 13/07/2026)
Erros relacionados
- A solicitação de transação não pode incluir várias operações em um item — o mesmo item é direcionado duas vezes em uma transação.
- TransactionCanceledException — uma transação válida cancelada no commit.
- Muitos itens solicitados para a chamada BatchWriteItem — o limite de lote não transacional (25).
- Exemplo de código: TransactWriteItems em Node.js — uma transação de tamanho correto para começar.
- Aprenda: transações DynamoDB · Operações em lote
Referências
- TransactWriteItems — Referência do Amazon DynamoDB API
- TransactGetItems — Referência do Amazon DynamoDB API
- Transações do Amazon DynamoDB: como funciona — Guia do desenvolvedor do Amazon DynamoDB
- BatchWriteItem — Referência do Amazon DynamoDB API
- Cotas de serviços, contas e tabelas 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: Member must have length less than or equal to 100
HTTP 400