¿DynamoDB tiene triggers?
Sí. Los triggers de DynamoDB se construyen con DynamoDB Streams más AWS Lambda: el stream captura cada cambio a nivel de elemento, y una función de Lambda suscrita al stream se ejecuta automáticamente en respuesta. No hay ninguna sentencia CREATE TRIGGER — el código del trigger vive en Lambda, fuera de la base de datos.
Cómo funciona un trigger
Activas DynamoDB Streams en la tabla y luego asocias el ARN del stream con una función de Lambda. Cada creación, actualización y borrado se captura como un registro del stream; el servicio de Lambda consulta el stream cuatro veces por segundo e invoca tu función de forma síncrona con lotes de registros nuevos. También puedes filtrar los eventos para que la función solo se ejecute con los cambios que te interesan.
Qué recibe realmente la función
Activamos un stream con StreamViewType: NEW_AND_OLD_IMAGES, escribimos un pedido, cambiamos su estado, lo borramos y luego leímos el shard de vuelta con GetRecords. Salieron tres registros, INSERT, MODIFY y REMOVE. Este es el del medio, literal:
{
"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"
}
}Las dos imágenes están en el registro. El paso de PENDING a SHIPPED se puede responder dentro de la función, sin ninguna llamada de vuelta a la tabla. Un GetItem dentro de un trigger cuesta una lectura y compite con la siguiente escritura, así que puede darte un tercer estado que no describe ninguna de las dos imágenes.
El tipo de vista se elige al activar el stream, y los registros ya escritos llevan solo lo que pidió. Elige KEYS_ONLY o NEW_IMAGE y no habrá ningún OldImage con el que comparar después.
Lambda entrega a tu función esos mismos registros dentro de un array Records y añade un campo eventSourceARN. El awsRegion de arriba pone ddblocal porque esta ejecución usó DynamoDB Local; contra el servicio lleva la región.
Para qué se usan los triggers
Los usos clásicos incluyen enviar notificaciones cuando cambia un valor, arrancar flujos de trabajo, mantener agregados y contadores, y copiar cada cambio a un almacenamiento duradero (como S3) para un rastro de auditoría permanente. Si la función da error, Lambda reintenta el lote hasta que funcione o hasta que los registros caduquen, con comportamiento de reintento y de lotes configurable.
Límites que conviene conocer
AWS recomienda suscribir como mucho dos funciones de Lambda a un mismo stream — más pueden provocar limitaciones de lectura. Las funciones de trigger deberían ser de vida corta; para procesamiento pesado, delega en un flujo de trabajo asíncrono en lugar de ejecutar lógica larga en línea.
Profundiza
Empieza por la guía de DynamoDB Streams para el modelo del stream en sí, usa el constructor de expresiones para redactar las escrituras a las que reaccionan tus triggers, y descarga DynoTable para observar los cambios de elementos que alimentan tu stream.
Referencias
- 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 por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.
El registro del stream se capturó el 2026-07-28 contra DynamoDB Local 3.3.0 con @aws-sdk/client-dynamodb 3.1095.0 sobre Node v24.18.0, y se reproduce sin editar salvo la indentación.