Cómo entender el modelo de programación de Lambda - AWS Lambda

Cómo entender el modelo de programación de Lambda

Lambda proporciona un modelo de programación que es común a todos los tiempos de ejecución. El modelo de programación define la interfaz entre el código y el sistema de Lambda. Le indica a Lambda el punto de entrada a la función al definir un controlador en la configuración de la función. El runtime se pasa en forma de objetos al controlador que contiene el evento de invocación y el contexto, como el nombre de la función y el ID de la solicitud.

Cuando el controlador termina de procesar el primer evento, el runtime le envía otro. La clase de la función permanece en la memoria, por lo que se pueden reutilizar los clientes y las variables declarados fuera del método del controlador en código de inicialización. Para ahorrar tiempo de procesamiento en eventos posteriores, cree recursos reutilizables como clientes AWSSDK durante la inicialización. Una vez inicializada, cada instancia de su función puede procesar miles de solicitudes.

La función también tiene acceso al almacenamiento local en el directorio /tmp. El contenido del directorio se conserva al congelar el entorno de ejecución, proporcionando una caché transitoria que se puede utilizar para varias invocaciones. Para obtener más información, consulte Entorno de ejecución de Lambda.

Cuando se habilita el seguimiento de AWS X-Ray, el tiempo de ejecución registra subsegmentos separados para la inicialización y la ejecución.

El tiempo de ejecución captura la salida de registro de la función y la envía a Amazon CloudWatch Logs. Además de registrar la salida de la función, el tiempo de ejecución también registra las entradas cuando comienza y finaliza la invocación. Esto incluye un registro de informe con el ID de solicitud, la duración facturada, la duración de inicialización y otros detalles. Si la función genera un error, el runtime devuelve ese error al invocador.

nota

El registro está sujeto a Cuotas de CloudWatch Logs. Los datos de registro se pueden perder debido a una limitación controlada o, en algunos casos, cuando se detiene una instancia de su función.

Lambda escala la función ejecutando instancias adicionales a medida que aumenta la demanda y deteniendo instancias a medida que disminuye la demanda. Este modelo conduce a variaciones en la arquitectura de la aplicación, por ejemplo:

  • A menos que se indique lo contrario, las solicitudes entrantes pueden procesarse de forma desordenada o simultánea.

  • Almacene el estado de la aplicación en otra parte; no confíe en que las instancias de la función tendrán una larga vida útil.

  • Utilice el almacenamiento local y los objetos de nivel de clase para aumentar el rendimiento, pero mantenga al mínimo el tamaño del paquete de implementación y la cantidad de datos que transfiere al entorno de ejecución.

Para obtener una introducción práctica sobre estos conceptos en su lenguaje de programación preferido, consulte los siguientes capítulos.