Prácticas recomendadas para usar DynamoDB Streams con Lambda - Amazon DynamoDB

Prácticas recomendadas para usar DynamoDB Streams con Lambda

Una función AWS Lambda se ejecuta dentro de un contenedor, a saber, un entorno de ejecución aislado de las demás funciones. Cuando se ejecuta una función por primera vez, AWS Lambda crea un nuevo contenedor y comienza a ejecutar el código de la función.

Una función Lambda posee un controlador que se ejecuta una vez en cada invocación. El controlador contiene la lógica empresarial principal de la función. Por ejemplo, la función Lambda que se muestra en Paso 4: crear y probar una función Lambda tiene un controlador que puede procesar los registros de una transmisión de DynamoDB.

También puede proporcionar código de inicialización que se ejecuta una sola vez después de crear el contenedor, pero antes de que AWS Lambda ejecute el controlador por primera vez. La función Lambda que se muestra en Paso 4: crear y probar una función Lambda incluye código de inicialización que importa el SDK para JavaScript en Node.js y crea un cliente para Amazon SNS. Estos objetos únicamente deben definirse una vez, fuera del controlador.

Después de ejecutar la función, AWS Lambda puede optar por reutilizar el contenedor en invocaciones posteriores de la función. En este caso, el controlador de la función podría volver a utilizar los recursos que se han definido en el código de inicialización. (No se puede controlar durante cuánto tiempo AWS Lambda conservará el contenedor ni si este se reutilizará o no).

Para los desencadenadores de DynamoDB que utilizan AWS Lambda, recomendamos lo siguiente:

  • Las instancias de los clientes de servicios de AWS deben crearse en el código de inicialización, no en el controlador. Esto permite que AWS Lambda reutilice las conexiones existentes mientras dure la vida útil del contenedor.

  • En general, no es necesario administrar de forma explícita las conexiones ni implementar la agrupación de conexiones, porque AWS Lambda lo hace automáticamente.

Un consumidor de Lambda para un flujo de DynamoDB no garantiza exactamente una entrega y puede generar duplicados. Asegúrese de que el código de la función de Lambda sea idempotente para evitar que surjan problemas inesperados por la aparición de duplicados.

Para obtener más información, consulte Prácticas recomendadas para trabajar con las funciones AWS Lambda en la Guía para desarrolladores de AWS Lambda.