View a markdown version of this page

AWS Lambda Concepts fondamentaux de MicroVMS - AWS Lambda

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS Lambda Concepts fondamentaux de MicroVMS

AWS Lambda MicroVMS utilise plusieurs types de ressources que vous créez et gérez. Cette page décrit chaque type de ressource, la manière dont Lambda crée votre image microVM en instantané, et les états du cycle de vie par lesquels une microVM passe au moment de l'exécution, ce qui constitue la base de la création d'applications avec microVM.

Concepts clés

MicroVM

Une microVM est une ressource qui représente un environnement informatique isolé pour un locataire, une session utilisateur ou une tâche unique. Chaque microVM exécute un système d'exploitation Amazon Linux 2023 doté de fonctionnalités permettant un lancement et une reprise quasi instantanés. Les microVM reçoivent des demandes via des connexions HTTPS entrantes et peuvent être suspendues en cas d'inactivité, afin de préserver la mémoire et l'état du disque. Une microVM suspendue reprend lorsque le trafic revient.

Image microVM

Une image microVM est une ressource qui définit l'environnement applicatif d'une microVM. Lorsque vous créez une image, Lambda l'intègre dans un instantané qui permet un lancement quasi instantané (voir Comment Lambda crée votre image ci-dessous).

Pour créer une image microVM, vous devez fournir un package zip contenant a Dockerfile et les artefacts de votre application, téléchargés sur Amazon S3. Vous devez utiliser une image de base Lambda-published gérée comme base. Spécifiez-la à l'aide du base-image-arn paramètre. Vous Dockerfile définissez les couches d'application que Lambda construit au-dessus de la base gérée.

Les images MicroVM sont versionnées. Chaque version représente une version unique produite à partir d'un artefact de code spécifique et d'une image de base. Une version passe par l'état de construction (PENDINGIN_PROGRESSSUCCESSFUL ouFAILED), et les versions réussies peuvent être définies sur ACTIVE ouINACTIVE. Pour plus de détails sur l'état et la gestion des images, consultezImages de microVM.

Connecteurs réseau

Les connecteurs réseau sont des ressources qui contrôlent la manière dont le trafic atteint votre microVM et la manière dont votre microVM atteint les services externes. Vous associez des connecteurs à une microVM au moment de l'exécution pour configurer l'accès entrant et sortant indépendamment.

Build-time et les connecteurs d'exécution peuvent être différents, ce qui permet à votre microVM d'atteindre différents environnements pendant la création de l'image par rapport à l'exécution.

Utilisez les Lambda-provided valeurs par défaut pour l'accès au port entrant (avec authentification JWE), l'accès au shell et la sortie Internet publique. Créez votre propre connecteur réseau pour acheminer le trafic sortant via votre VPC.

Comment Lambda crée votre image

Lorsque vous créez ou mettez à jour une image microVM, Lambda exécute un processus de génération qui produit un instantané Firecracker. Cet instantané capture l'état complètement initialisé de votre application, permettant ainsi le lancement et la reprise quasi instantanés des microVM qui s'exécutent à partir de celle-ci.

Le processus de construction :

  1. Lambda provisionne une nouvelle microVM à l'aide de l'image de base gérée que vous avez spécifiée.

  2. Lambda exécute vos Dockerfile instructions pour installer les dépendances et configurer votre environnement.

  3. Lambda démarre votre application à l'aide de la commande ENTRYPOINT orCMD.

  4. Si vous avez activé le /ready hook, Lambda attend que votre application indique qu'elle est prête (HTTP 200).

  5. Lambda capture un instantané de l'état du disque et de la mémoire, y compris de tous les processus en cours d'exécution.

Lorsque vous exécutez une microVM, Lambda la restaure à partir de cet instantané. Votre application reprend son état pré-initialisé sans recommencer le démarrage.

Si votre application génère un contenu unique lors de la création (tel que des identifiants uniques, des secrets ou des connexions réseau), ce contenu est partagé entre toutes les microVM exécutées à partir de la même version d'image. Pour éviter cela, générez un contenu unique une fois que le microVM commence à utiliser le hook du /run cycle de vie. Pour plus de détails, consultez la section sur la compatibilité des instantanés dansImages de microVM.

Cycle de vie des microVM

Au moment de l'exécution, une microVM passe par les étapes suivantes :

  1. Courez — Vous appelezrun-microvm. Lambda restaure la microVM à partir de l'instantané d'image, attribue un identifiant unique et crée un point de terminaison. La microVM passe de PENDING à. RUNNING

  2. En cours d'exécution : votre application reçoit et traite les demandes via l'URL de son point de terminaison.

  3. Suspendre — Après une période d'inactivité configurable (ou via l'suspend-microvmAPI), le microVM passe SUSPENDING àSUSPENDED. L'état de la mémoire et du disque est préservé.

  4. Reprise — La microVM passe du mode SUSPENDED direct au RUNNING moment où le trafic arrive (siautoResumeEnabled=true) ou lorsque vous appelezresume-microvm.

  5. Terminer — La microVM passe du mode TERMINATING au TERMINATED moment où vous appelez terminate-microvm ou au moment où la durée maximale est dépassée.

States

Le tableau suivant décrit chaque état de microVM. Ces états vous permettent de créer des applications fiables et de mettre en œuvre une gestion appropriée des erreurs.

State Description
PENDING MicroVM est en cours de provisionnement. Les ressources sont allouées et le snapshot est en cours de chargement.
RUNNING MicroVM est actif et accepte le trafic via l'URL de son point de terminaison. Le /run crochet est terminé.
SUSPENDING MicroVM est suspendu. Le /suspend hook est en cours d'exécution. Le disque et la mémoire sont en cours de contrôle.
SUSPENDED MicroVM est suspendu. L'État est préservé. Aucuns frais de calcul ne sont facturés. Peut être repris ou résilié.
TERMINATING MicroVM est en cours d'arrêt. Le /terminate hook est en cours d'exécution. Des ressources sont en train d'être débloquées.
TERMINATED MicroVM a été résilié. Il s’agit d’un statut de terminal. La microVM ne peut pas être reprise ou redémarrée.

Transitions entre États

Le tableau suivant indique les transitions valides entre les états de microVM et indique ce qui déclenche chaque transition.

Initial state (État initial) État cible Déclencheur
PENDING RUNNING Provisionnement terminé, /run crochet réussi.
RUNNING SUSPENDING Durée d'inactivité dépassée ou appel suspend-microvm d'API explicite.
SUSPENDING SUSPENDED /suspendcrochet terminé, vérification de la mémoire et de l'état du disque.
SUSPENDED RUNNING Le trafic arrive (autoResumeEnabled=true) ou appel resume-microvm d'API explicite.
RUNNING TERMINATING Appel terminate-microvm d'API explicite, ou maximumDurationInSeconds dépassé.
SUSPENDED TERMINATING suspendedDurationSecondsdépassé ou appel d'terminate-microvmAPI explicite.
TERMINATING TERMINATED /terminatecrochet terminé, toutes les ressources sont publiées.
Important

Si votre /run hook échoue ou expire, le microVM peut passer directement à TERMINATING sans jamais l'atteindreRUNNING. Implémentez le délai d'expiration et la gestion des erreurs dans vos hooks pour éviter les pannes silencieuses.