Conceptos clave de las MicroVM de AWS Lambda
Las MicroVM de AWS Lambda utilizan varios tipos de recursos que puede crear y administrar. Esta página describe cada tipo de recurso, cómo Lambda crea una instantánea a partir de la imagen de la MicroVM y los estados del ciclo de vida por los que pasa una MicroVM durante el tiempo de ejecución. Estos conceptos constituyen la base para crear aplicaciones con MicroVM.
Conceptos clave
- MicroVM
-
Una MicroVM es un recurso que representa un entorno de computación aislado para un solo inquilino, una sesión de usuario o un trabajo. Cada MicroVM ejecuta un sistema operativo Amazon Linux 2023 con capacidades de sistema operativo, lo que permite un lanzamiento y una reanudación casi instantáneos. Las MicroVM reciben solicitudes mediante conexiones HTTPS entrantes y se pueden suspender cuando están inactivas sin perder el estado de la memoria ni del disco. Una MicroVM suspendida se reanuda cuando vuelve a recibir tráfico.
- Imagen de MicroVM
-
Una imagen de MicroVM es un recurso que define el entorno de aplicación de una MicroVM. Cuando crea una imagen, Lambda la convierte en una instantánea que permite un lanzamiento casi instantáneo. Consulte Cómo Lambda compila la imagen más adelante.
Para crear una imagen de MicroVM, debe cargar en Amazon S3 un paquete .zip que contenga un
Dockerfiley los artefactos de la aplicación. Debe utilizar como base una imagen base administrada y publicada por Lambda. Especifíquela mediante el parámetrobase-image-arn. ElDockerfiledefine las capas de la aplicación que Lambda compila sobre la imagen base administrada.A las imágenes de MicroVM se les aplica control de versiones. Cada versión representa una única compilación generada a partir de un artefacto de código y una imagen base específicos. Una versión pasa por distintos estados de compilación (
PENDING→IN_PROGRESS→SUCCESSFULoFAILED), y las versiones compiladas correctamente se pueden establecer enACTIVEoINACTIVE. Para obtener más información sobre los estados y la administración de las imágenes, consulte Imágenes de MicroVM. - Conectores de red
-
Los conectores de red son recursos que controlan cómo llega el tráfico a la MicroVM y cómo esta accede a servicios externos. Los conectores se asocian a una MicroVM durante el tiempo de ejecución para configurar de forma independiente el acceso entrante y saliente.
Los conectores utilizados durante la compilación y el tiempo de ejecución pueden ser diferentes, lo que permite que la MicroVM acceda a distintos entornos durante la compilación de la imagen y durante el tiempo de ejecución.
Use los valores predeterminados proporcionados por Lambda para el acceso a puertos entrantes, con autenticación JWE, el acceso al intérprete de comandos y la salida a la Internet pública. Cree su propio conector de red para dirigir el tráfico saliente a través de la VPC.
Cómo Lambda compila la imagen
Cuando crea o actualiza una imagen de MicroVM, Lambda lleva a cabo un proceso de compilación que genera una instantánea de Firecracker. Esta instantánea captura el estado completamente inicializado de la aplicación, lo que permite el lanzamiento y la reanudación casi instantáneos de las MicroVM que se ejecutan a partir de esta.
El proceso de compilación:
-
Lambda aprovisiona una nueva MicroVM mediante la imagen base administrada que especificó.
-
Lambda ejecuta las instrucciones
Dockerfilepara instalar las dependencias y configurar el entorno. -
Lambda inicia la aplicación mediante el comando
ENTRYPOINToCMD. -
Si habilitó el enlace
/ready, Lambda espera a que la aplicación indique que está lista (HTTP 200). -
Lambda captura una instantánea del estado del disco y la memoria, incluidos todos los procesos en ejecución.
Cuando ejecuta una MicroVM, Lambda la restaura a partir de esta instantánea. La aplicación se reanuda desde su estado preinicializado sin repetir el proceso de inicio.
Si la aplicación genera contenido único durante la compilación, como identificadores únicos, secretos o conexiones de red, dicho contenido se comparte entre todas las MicroVM que se ejecutan a partir de la misma versión de la imagen. Para evitarlo, genere contenido único después de que se inicie la MicroVM mediante el enlace de ciclo de vida /run. Para obtener más información, consulte la sección sobre compatibilidad con instantáneas en Imágenes de MicroVM.
Ciclo de vida de una MicroVM
Durante el tiempo de ejecución, una MicroVM pasa por las siguientes etapas:
-
Ejecución: se llama a
run-microvm. Lambda restaura la MicroVM a partir de la instantánea de la imagen, le asigna un identificador único y crea un punto de conexión. La MicroVM pasa dePENDINGaRUNNING. -
En ejecución: la aplicación recibe y procesa solicitudes mediante la URL de su punto de conexión.
-
Suspensión: después de un período de inactividad configurable, o mediante la API
suspend-microvm, la MicroVM pasa porSUSPENDINGhasta llegar aSUSPENDED. Se conserva el estado de la memoria y del disco. -
Reanudación: la MicroVM vuelve directamente de
SUSPENDEDaRUNNINGcuando llega tráfico, siautoResumeEnabled=true, o cuando se llama aresume-microvm. -
Terminación: la MicroVM pasa por
TERMINATINGhasta llegar aTERMINATEDcuando se llama aterminate-microvmo se supera la duración máxima.
Estados
La siguiente tabla describe cada estado de una MicroVM. Estos estados permiten crear aplicaciones confiables e implementar un tratamiento de errores adecuado.
| Estado | Descripción |
|---|---|
PENDING |
La MicroVM se encuentra en proceso de aprovisionamiento. Se asignan los recursos y se carga la instantánea. |
RUNNING |
La MicroVM está activa y acepta tráfico mediante la URL de su punto de conexión. El enlace /run se completó. |
SUSPENDING |
La MicroVM se encuentra en proceso de suspensión. El enlace /suspend se ejecuta. Se crea un punto de comprobación del estado del disco y de la memoria. |
SUSPENDED |
La MicroVM está suspendida. Se conserva el estado. No se generan cargos de computación. Se puede reanudar o terminar. |
TERMINATING |
La MicroVM se encuentra en proceso de terminación. El enlace /terminate se ejecuta. Se liberan los recursos. |
TERMINATED |
La MicroVM ha sido terminada. Se trata de un estado terminal. La MicroVM no se puede reanudar ni reiniciar. |
Transiciones de estado
La siguiente tabla muestra las transiciones válidas entre los estados de una MicroVM y los factores que desencadenan cada transición.
| Initial state (Estado inicial) | Estado de destino | Desencadenador |
|---|---|---|
PENDING |
RUNNING |
Aprovisionamiento completado; el enlace /run se completó correctamente. |
RUNNING |
SUSPENDING |
Se superó la duración de inactividad o se realizó una llamada explícita a la API suspend-microvm. |
SUSPENDING |
SUSPENDED |
El enlace /suspend se completó y se creó un punto de comprobación del estado de la memoria y del disco. |
SUSPENDED |
RUNNING |
Llega tráfico (autoResumeEnabled=true) o se realiza una llamada explícita a la API resume-microvm. |
RUNNING |
TERMINATING |
Se realiza una llamada explícita a la API terminate-microvm o se supera maximumDurationInSeconds. |
SUSPENDED |
TERMINATING |
Se supera suspendedDurationSeconds o se realiza una llamada explícita a la API terminate-microvm. |
TERMINATING |
TERMINATED |
El enlace /terminate se completó y se liberaron todos los recursos. |
importante
Si el enlace /run falla o se agota su tiempo de espera, la MicroVM puede pasar directamente a TERMINATING sin llegar en ningún momento a RUNNING. Implemente en los enlaces mecanismos para controlar los tiempos de espera y tratar los errores, a fin de evitar fallos silenciosos.