Descripción del entorno de ejecución de instancias administradas de Lambda
Las instancias administradas de Lambda proporcionan un modelo de implementación alternativo que ejecuta el código de función en instancias de Amazon EC2 propiedad del cliente, mientras que Lambda administra los aspectos operativos. El entorno de ejecución de las instancias administradas presenta varias diferencias importantes con respecto a las funciones de Lambda (predeterminadas), especialmente en la forma en que gestiona las invocaciones simultáneas y gestiona los ciclos de vida de los contenedores.
Nota: Para obtener información sobre el entorno de ejecución de Lambda (predeterminado), consulte Descripción del ciclo de vida del entorno de ejecución de Lambda.
Ciclo de vida del entorno de ejecución
El ciclo de vida de un entorno de ejecución de funciones de instancias administradas de Lambda difiere del de Lambda (predeterminado) en varios aspectos clave:
Fase "init"
Durante la fase de inicialización, Lambda realiza los siguientes pasos:
-
Inicializa y registra todas las extensiones.
-
Arranca el punto de entrada del tiempo de ejecución. El tiempo de ejecución genera el número configurado de trabajadores en tiempo de ejecución (la implementación depende del tiempo de ejecución).
-
Ejecuta el código de inicialización de la función (código externo al controlador).
-
Espera a que al menos un trabajador en tiempo de ejecución indique que está listo mediante una llamada a
/runtime/invocation/next.
La fase de inicio se considera completa cuando las extensiones se han inicializado y al menos un trabajador en tiempo de ejecución ha llamado a /runtime/invocation/next. La función está entonces lista para procesar las invocaciones.
nota
En el caso de las funciones de las instancias administradas de Lambda, la inicialización puede tardar hasta 15 minutos. El tiempo de espera es 130 segundos o el tiempo de espera de la función configurado (máximo de 900 segundos), lo que sea mayor.
Fase "invoke"
La fase de invocación para las funciones de instancias administradas de Lambda tiene varias características únicas:
Funcionamiento continuo. A diferencia de Lambda (predeterminado), el entorno de ejecución permanece activo de forma continua y procesa las invocaciones a medida que llegan sin bloquearse entre las invocaciones.
Procesamiento en paralelo. Se pueden ejecutar varias invocaciones simultáneamente en el mismo entorno de ejecución, y cada una de ellas es administrada por un trabajador en tiempo de ejecución diferente.
Tiempos de espera independientes. El tiempo de espera configurado de la función se aplica a cada invocación individual. Cuando se agota el tiempo de espera de una invocación, Lambda marca esa invocación específica como fallida, pero no interrumpe otras invocaciones en ejecución ni finaliza el entorno de ejecución.
Gestión de la contrapresión. Si todos los trabajadores en tiempo de ejecución están ocupados procesando las invocaciones, se rechazan las nuevas solicitudes de invocación hasta que haya un trabajador disponible.
Gestión de errores y recuperación
La gestión de errores en los entornos de ejecución de funciones de instancias administradas de Lambda es diferente al de Lambda (predeterminado):
Tiempos de espera de invocación. Cuando se agota el tiempo de espera de una invocación individual, Lambda devuelve un error de tiempo de espera para esa invocación específica, pero no finaliza el entorno de ejecución. El resto de las invocaciones simultáneas se siguen procesando con normalidad.
Errores del trabajador en tiempo de ejecución. Si un proceso de trabajo en tiempo de ejecución se bloquea, el entorno de ejecución sigue funcionando con el resto de los trabajadores en buen estado.
La extensión se bloquea. Si un proceso de extensión se bloquea durante la inicialización o la operación, todo el entorno de ejecución se marca como en mal estado y finaliza. Lambda crea un nuevo entorno de ejecución para reemplazarlo.
Sin reinicio/reparación. A diferencia de Lambda (predeterminado), las instancias administradas no intentan restablecer ni reinicializar el entorno de ejecución después de los errores. En cambio, los contenedores en mal estado se finalizan y se reemplazan por otros nuevos.