DynamoDB Streams y disparadores de AWS Lambda
Amazon DynamoDB se integra con AWS Lambda para que pueda crear desencadenadores, a saber, fragmentos de código que responden automáticamente a los eventos de DynamoDB Streams. Con los disparadores, puede crear aplicaciones que reaccionan ante las modificaciones de datos en las tablas de DynamoDB.
Temas
Si habilita DynamoDB Streams en una tabla, puede asociar el nombre de recurso de Amazon (ARN) de la transmisión con una función de AWS Lambda que haya escrito. Todas las acciones de mutación a esa tabla de DynamoDB pueden capturarse como un elemento en el flujo. Por ejemplo, puede establecer un desencadenador para que, cuando se modifique un elemento de una tabla, aparezca inmediatamente un nuevo registro en el flujo de esa tabla.
nota
Si suscribe más de dos funciones de Lambda a un solo flujo de DynamoDB, podría aplicarse una limitación en la lectura.
El servicio AWS Lambda sondea el flujo en busca de nuevos registros cuatro veces por segundo. Cuando hay nuevos registros de flujo disponibles, se invoca su función Lambda de forma sincrónica. Puede suscribir hasta dos funciones Lambda al mismo flujo de DynamoDB. Si suscribe más de dos funciones de Lambda al mismo flujo de DynamoDB, podría aplicarse una limitación en la lectura.
La función Lambda puede enviar una notificación, iniciar un flujo de trabajo o realizar otras muchas acciones que le especifique. Puede escribir una función Lambda para que simplemente copie cada registro de flujo a un almacenamiento persistente, como la puerta de enlace de archivo de Amazon S3 (Amazon S3), y crear un registro de auditoría permanente de la actividad de escritura en su tabla. O bien suponga que tiene una aplicación de juegos para móviles que escribe en una tabla GameScores
. Cada vez que se actualiza el atributo TopScore
de la tabla GameScores
, se escribe el registro correspondiente en la secuencia de la tabla. Este evento, a su vez, puede activar una función Lambda que publique un mensaje de felicitación en una red social. Esta función también podría escribirse para ignorar cualquier registro de flujo que no sea una actualización de GameScores
o que no modifique el atributo TopScore
.
Sin embargo, si la función devuelve un error, Lambda vuelve a intentar ejecutar el lote hasta que se procese correctamente o los datos caduquen. También puede configurar Lambda para que lo reintente con un lote más pequeño, limitar el número de reintentos, descartar los registros cuando sean demasiado antiguos y otras opciones.
Como práctica recomendada de rendimiento, la función Lambda debe ser de corta duración. Para evitar introducir retrasos innecesarios en el procesamiento, tampoco debe ejecutar una lógica compleja. Para un flujo de alta velocidad en concreto, es mejor desencadenar un flujo de trabajo asíncrono de funciones de posprocesamiento que funciones Lambda sincrónicas de larga duración.
No puede utilizar el mismo desencadenador Lambda en diferentes cuentas de AWS. Tanto la tabla de DynamoDB como las funciones de Lambda deben pertenecer a la misma cuenta de AWS.
Para obtener más información sobre AWS Lambda, consulte la Guía para desarrolladores de AWS Lambda.