Ejecución de código con Lambda
Cuando escribe una función de Lambda, está creando código que se ejecutará en un entorno sin servidor único. Comprender cómo Lambda ejecuta realmente el código implica dos aspectos clave: el modelo de programación que define la forma en que el código interactúa con Lambda, y el ciclo de vida del entorno de ejecución que determina cómo Lambda gestiona el entorno del tiempo de ejecución del código.
El modelo de programación de Lambda
El modelo de programación funciona como un conjunto común de reglas sobre cómo Lambda trabaja con su código, independientemente de si está escribiendo en Python, Java o cualquier otro lenguaje compatible. El modelo de programación incluye el tiempo de ejecución y el controlador.
En el caso de funciones estándar:
-
Lambda recibe un evento.
-
Lambda utiliza el tiempo de ejecución para preparar el evento en un formato que pueda usar el código.
-
El tiempo de ejecución envía el evento formateado a su controlador.
-
Su controlador procesa el evento mediante el código que ha escrito.
En el caso de funciones duraderas:
-
Lambda recibe un evento.
-
El tiempo de ejecución prepara tanto el evento como DurableContext.
-
El controlador puede realizar lo siguiente:
Procesar los pasos con creación automática de puntos de control.
Pausar la ejecución sin consumir recursos.
Continuar desde el último punto de control exitoso.
Mantener el estado entre pasos.
Un elemento esencial de este modelo es el controlador, donde Lambda envía los eventos para que los procese su código. Considérelo como el punto de entrada a su código. Cuando Lambda recibe un evento, pasa este evento y parte de la información de contexto a su controlador. A continuación, el controlador ejecuta su código para procesar estos eventos; por ejemplo, puede leer un archivo cuando se carga en Amazon S3, analizar una imagen o actualizar una base de datos. Una vez que su código termina de procesar un evento, el controlador está listo para procesar el siguiente.
El modelo de ejecución de Lambda
Mientras que el modelo de programación define cómo Lambda interactúa con su código, el entorno de ejecución es donde Lambda realmente ejecuta la función: es un espacio de cómputo seguro y aislado creado específicamente para su función.
Cada entorno sigue un ciclo de vida que varía entre funciones estándar y duraderas:
Funciones estándar (hasta 15 minutos):
-
Inicialización: configuración del entorno y carga de código.
-
Invocación: ejecución única del código de la función.
-
Cierre: limpieza del entorno.
Funciones duraderas (hasta 1 año):
-
Inicialización: configuración de entorno y estado duradero.
-
Invocación: varios pasos con creación automática de puntos de control.
-
Estados de espera: pausan la ejecución sin consumir recursos.
-
Reanudación: reinicia desde el último punto de control.
-
Cierre: limpieza del estado duradero.
Este entorno gestiona aspectos importantes de la ejecución de su función. Proporciona memoria a la función y un directorio /tmp para el almacenamiento temporal. En el caso de las funciones duraderas, también administra lo siguiente:
Persistencia automática del estado entre pasos
Almacenamiento y recuperación de puntos de control
Coordinación del estado de espera
Seguimiento del progreso en las ejecuciones de larga duración