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

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.

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.