O DynamoDB tem triggers?
Sim. Os triggers do DynamoDB são construídos com o DynamoDB Streams mais o AWS Lambda: o stream captura toda mudança no nível do item, e uma função Lambda inscrita no stream roda automaticamente em resposta. Não existe instrução CREATE TRIGGER — o código do trigger vive no Lambda, fora do banco de dados.
Como um trigger funciona
Você habilita o DynamoDB Streams na tabela e depois associa o ARN do stream a uma função Lambda. Toda criação, atualização e exclusão é capturada como um registro do stream; o serviço Lambda consulta o stream quatro vezes por segundo e invoca a sua função de forma síncrona com lotes de novos registros. Você também pode filtrar eventos para que a função rode apenas nas mudanças que te interessam.
O que a função realmente recebe
Habilitamos um stream com StreamViewType: NEW_AND_OLD_IMAGES, gravamos um pedido, mudamos o status dele, o excluímos e então lemos o shard de volta com GetRecords. Saíram três registros: INSERT, MODIFY e REMOVE. Este é o do meio, literalmente:
{
"eventID": "77dabd57-20e1-4827-83e9-0fa20153adb0",
"eventName": "MODIFY",
"eventVersion": "1.1",
"eventSource": "aws:dynamodb",
"awsRegion": "ddblocal",
"dynamodb": {
"ApproximateCreationDateTime": 1785266820,
"Keys": {"pk": {"S": "ORDER#1"}},
"NewImage": {
"total": {"N": "42"},
"pk": {"S": "ORDER#1"},
"status": {"S": "SHIPPED"}
},
"OldImage": {
"total": {"N": "42"},
"pk": {"S": "ORDER#1"},
"status": {"S": "PENDING"}
},
"SequenceNumber": "000000000000000019180",
"SizeBytes": 67,
"StreamViewType": "NEW_AND_OLD_IMAGES"
}
}As duas imagens estão no registro. PENDING para SHIPPED é respondível dentro da função, sem nenhuma chamada de volta à tabela. Um GetItem em um trigger custa uma leitura e corre contra a próxima escrita, então ele pode te entregar um terceiro estado que nenhuma das imagens descreve.
O tipo de visão é escolhido quando você habilita o stream, e os registros já gravados carregam apenas o que ele pediu. Escolha KEYS_ONLY ou NEW_IMAGE e não haverá OldImage para comparar depois.
O Lambda entrega à sua função esses mesmos registros dentro de um array Records e adiciona um campo eventSourceARN. O awsRegion acima diz ddblocal porque esta execução usou o DynamoDB Local; contra o serviço, ele carrega a Região.
Para que os triggers são usados
Os usos clássicos incluem enviar notificações quando um valor muda, disparar workflows, manter agregados e contadores, e copiar cada mudança para armazenamento durável (como o S3) para uma trilha de auditoria permanente. Se a função der erro, o Lambda tenta o lote de novo até que ele tenha sucesso ou os registros expirem, com comportamento de retry e de lote configurável.
Limites que vale a pena conhecer
A AWS recomenda inscrever no máximo duas funções Lambda em um stream — mais do que isso pode causar throttling de leitura. Funções de trigger devem ser de curta duração; para processamento pesado, repasse para um workflow assíncrono em vez de rodar lógica longa inline.
Aprofunde-se
Comece pelo guia do DynamoDB Streams para o modelo de stream em si, use o expression builder para elaborar as escritas às quais os seus triggers reagem, e baixe o DynoTable para acompanhar as mudanças de item que alimentam o seu stream.
Referências
- DynamoDB Streams and AWS Lambda triggers — Amazon DynamoDB Developer Guide
- Change data capture for DynamoDB Streams — Amazon DynamoDB Developer Guide
- Quotas in Amazon DynamoDB — Amazon DynamoDB Developer Guide
- Using AWS Lambda with Amazon DynamoDB — AWS Lambda Developer Guide
Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.
O registro do stream foi capturado em 2026-07-28 no DynamoDB Local 3.3.0 com @aws-sdk/client-dynamodb 3.1095.0 no Node v24.18.0, e está reproduzido sem edição, salvo pela indentação.