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.
Images de microVM
Cette section décrit comment créer, configurer, mettre à jour et gérer des images microVM.
Une image microVM est une ressource qui définit le système de fichiers et l'environnement applicatif d'une microVM. L'image microVM inclut votre environnement d'exécution, le code de l'application et les programmes de support tels que les processus d'arrière-plan et les agents d'observabilité. Pour créer une image microVM, vous fournissez un package zip contenant un Dockerfile et les artefacts de votre application, que vous chargez sur Amazon S3. Vous définissez Dockerfile la manière dont votre application est empaquetée. Lambda crée l'image de conteneur de votre Dockerfile application en l'exécutant au-dessus d'un environnement de système d'exploitation fourni par une image de base Lambda-managed microVM. Les images de base de MicroVM sont décrites ci-dessous, dans la section intitulée —Images de base MicroVM.
Vous pouvez mettre à jour les images de base de votre microVM pour mettre à jour le code d'application ou la configuration de votre microVM. Chaque mise à jour que vous déclenchez crée une nouvelle version de l'image MicroVM.
Comment Lambda crée une image microVM
Lorsque vous créez une image microVM, Lambda :
-
Récupère vos artefacts empaquetés sur Amazon S3.
-
Démarre une nouvelle microVM à partir de l'image Lambda-managed de base.
-
Exécute les instructions de votre.
Dockerfile -
Lance votre application à l'aide de l'
CMDinstructionENTRYPOINTor. -
Attend la fin de l'initialisation, signalée par votre hook de cycle de vie.
-
Capture un instantané de l'état du disque et de la mémoire.
Une fois le processus de capture d'écran terminé, votre image microVM passe à l'CREATEDétat. Vous pouvez désormais utiliser cette image microVM pour créer une microVM, et chaque image microVM peut être utilisée pour créer plusieurs microVM indépendantes. Une microVM exécutée à partir de l'image de la microVM reprend directement à partir de l'état de capture instantanée, ce qui permet des temps de démarrage rapides. Chaque image microVM peut être utilisée pour exécuter plusieurs microVM, jusqu'à la limite disponible pour votre compte.
Pour une présentation étape par étape de l'empaquetage de votre code et de la création de votre première image microVM, reportez-vous à. Créez votre premier microVM
Dimensionnement des microVM
Lambda MicroVMS utilise un modèle de référence de pointe qui élimine le besoin de dimensionner correctement chaque environnement de calcul en fonction de l'activité maximale. Vous configurez les ressources de calcul de base pour votre microVM. Pendant les pics d'activité, votre microVM peut automatiquement être redimensionnée verticalement jusqu'à 4 fois la ligne de base. Vous payez le tarif de base pendant que votre microVM fonctionne et vous ne payez que pour ce que vous utilisez activement au-delà du taux de référence, facturé à la seconde.
Vous définissez la ligne de base via le memory paramètre lors de la création de votre image microVM. Le vCPU évolue proportionnellement à la mémoire (2 Go = 1 vCPU). La ligne de base par défaut est de 2 Go/1 vCPU.
Le tableau suivant répertorie les tailles disponibles :
| Base de référence | Pic | Espace disque maximal |
|---|---|---|
| 0,5 Go de mémoire, 0,25 vCPU | 2 Go de mémoire, 1 vCPU | 8 Go |
| 1 Go de mémoire, 0,5 vCPU | 4 Go de mémoire, 2 vCPU | 8 Go |
| 2 Go de mémoire, 1 vCPU (par défaut) | 8 Go de mémoire, 4 vCPU | 8 Go |
| 4 Go de mémoire, 2 vCPU | 16 Go de mémoire, 8 vCPU | 16 Go |
| 8 Go de mémoire, 4 vCPU | 32 Go de mémoire, 16 vCPU | 32 GO |
Images de base MicroVM
Une image de base microVM sert de base à vos images microVM. Lambda publie une image de base MicroVM qui fournit le système d'exploitation Amazon Linux 2023 et les composants de service requis pour exécuter les microVM. Lorsque vous créez ou mettez à jour une image microVM, Lambda démarre une nouvelle microVM à partir de cette image de base et exécute Dockerfile vos instructions dans cet environnement de système d'exploitation.
Lambda publie régulièrement de nouvelles versions d'images de base de microVM gérées par des services, par exemple lors de l'application de correctifs de sécurité, afin de mettre à jour le système d'exploitation ou les composants du service. Par défaut, la dernière version d'une image de base gérée par un service s'applique lorsque vous êtes creating/updating vos propres images microVM. Pour le dépannage ou le débogage, vous pouvez éventuellement remplacer la version des images basées sur le service lorsque vous créez votre propre image microVM à l'aide du paramètre. base-image-version
Les versions de l'image de base suivent un cycle de vie d'obsolescence :
-
AVAILABLE— Actuel, utilisation recommandée. -
DEPRECATED(60 jours) — Une version plus récente existe. Vous pouvez toujours créer et exécuter. -
EXPIRING(30 jours) — Impossible de créer de nouvelles images. Les images existantes peuvent toujours s'exécuter. -
EXPIRED— Impossible de créer ou d'exécuter. Reconstruisez votre image sur une version compatible. -
RECALLED— Indisponible immédiatement en raison de problèmes de sécurité critiques (rare).
Pour rester à jour, surveillez les notifications d'obsolescence et reconstruisez vos images microVM lorsqu'une nouvelle version de l'image de base est publiée.
Notez que l'image de base MicroVM est distincte de l'image de base du conteneur que vous spécifiez dans vos Dockerfiles. Alors que le premier définit l'environnement du système d'exploitation de vos microVM, le second définit l'image de conteneur de base à utiliser lors du packaging de votre application pour une utilisation avec les microVM Lambda. Pour en savoir plus, consultez la section sur Images de base de conteneur.
Utilisez les API suivantes pour découvrir les images de base microVM gérées disponibles et leurs versions :
# List all managed MicroVM base images aws lambda-microvms list-managed-microvm-images # List the versions of a specific managed MicroVM base image aws lambda-microvms list-managed-microvm-image-versions \ --image-identifier arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1
Hooks de création d'images MicroVM
Lambda fournit des hooks de création d'images microVM qui vous permettent de vérifier l'exactitude de l'application et d'optimiser les performances lors de la création d'images microVM. Les hooks s'exécutent avant que Lambda ne prenne le snapshot utilisé pour initialiser chaque microVM. Chaque hook est un point de terminaison HTTP que votre application expose et que Lambda appelle pendant la construction. En répondant à ces demandes, vous contrôlez et validez le processus de création d'images microVM. Lambda utilise des codes d'état HTTP pour déterminer si les hooks ont été correctement exécutés.
Important
Si vous configurez des hooks, vous devez spécifier le port sur lequel votre application écoute les demandes de hook.
| Crochet | Chemin | Détails | HTTP Status Codes | Timeout |
|---|---|---|---|---|
| /prêt | /aws/lambda-microvms/runtime/v1/ready |
Appelé lors de la création de l'image microVM, après le démarrage de votre application via ENTRYPOINT ouCMD. Signale que votre application est prête à être capturée. |
HTTP 503 : pas encore prêt ; Lambda essaie à nouveau jusqu'à expiration du délai imparti. HTTP 200 : initialisation terminée ; Lambda prend le snapshot. | 1 à 3 600 secondes () readyTimeoutInSeconds |
| /valider | /aws/lambda-microvms/runtime/v1/validate |
Appelé une fois la compilation terminée, sur une nouvelle microVM démarrée à partir de l'image créée. Confirme que l'application fonctionne correctement lorsqu'elle est reprise. | HTTP 503 : la validation nécessite plus de temps ; Lambda réessaie jusqu'à expiration du délai imparti. HTTP 200 : validation réussie. | 1 à 3 600 secondes () validateTimeoutInSeconds |
Important
Lorsque vous renvoyez le protocole HTTP 503, renvoyez-le immédiatement plutôt que de maintenir la requête ouverte pendant que vous attendez. Si le délai d'attente expire alors qu'une demande est maintenue ouverte, Lambda met fin à la construction.
Note
Vous pouvez également utiliser le hook /validate pour optimiser le temps de démarrage. Pour ce faire, exécutez des charges utiles fictives lors de la validation. Cela permet à Lambda de suivre les régions consultées de votre instantané et d'optimiser leur récupération lors du démarrage de la microVM.
Mise à jour d'une image microVM
Vous pouvez mettre à jour une image microVM existante en appelant l'update-microvm-imageAPI. Chaque mise à jour déclenche la création d'une nouvelle version d'image MicroVM. Vous mettez généralement à jour une image microVM pour :
-
Déployer un nouveau code d'application : pointez sur un nouvel artefact de code (un nouveau fichier zip chargé sur Amazon S3) pour expédier une nouvelle version de votre application.
-
Passer à une image de base microVM plus récente : modifiez l'ARN de l'image de base microVM pour effectuer une mise à niveau vers des versions plus récentes de l'image de base microVM Lambda. Pour plus d’informations, consultez Corriger des images MicroVM et Images de base MicroVM.
-
Modifier le rôle de build : mettez à jour l'ARN du rôle de build lorsque les autorisations dont Lambda a besoin pendant la construction changent, par exemple lorsque votre artefact de code est déplacé vers un autre bucket Amazon S3 ou que vous commencez à extraire des données d'un référentiel ECR privé.
-
Ajustez la configuration d'exécution : modifiez les hooks, les variables d'environnement ou les fonctionnalités pour reconfigurer la façon dont votre image microVM est créée et exécutée.
-
Mettre à jour la description — Modifiez la description de l'image microVM pour enregistrer ce qui a changé dans cette version.
La commande CLI suivante montre comment mettre à jour une image microVM. Les --build-role-arn paramètres --base-image-arn et sont obligatoires à chaque update-microvm-image appel qui déclenche une nouvelle version, même si vous ne modifiez que l'artefact du code. Les omettre entraîne : ValidationException
aws lambda-microvms update-microvm-image \ --image-identifierarn:aws:lambda:us-east-1:123456789012:microvm-image:my-microvm-image\ --code-artifact uri=s3://my-bucket/deployments/app-v2.zip \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole \ --description "Updated with v2 application code"
États de l'image et états de construction
Chaque fois que vous créez ou mettez à jour une image microVM, Lambda produit une nouvelle version créée à partir de votre artefact de code et de votre image de base. Une image microVM peut avoir de nombreuses versions au fil du temps, et vous pouvez exécuter des microVM à partir d'une version spécifique.
Trois États indépendants suivent les différents aspects du cycle de vie :
-
État de l'image : cycle de vie global de la ressource d'image microVM (en cours de création, prête à être utilisée, en cours de mise à jour, en échec ou en cours de suppression).
-
État de la version : progression de la construction d'une version spécifique (en attente, création, réussite ou échec). Vérifiez
stateReasonou enregistrez CloudWatch (/aws/lambda/microvms/<image-name>) les détails de l'échec. -
Activation de version : indique si une version créée avec succès est autorisée à exécuter des microVM. Lambda définit
ACTIVEautomatiquement les nouvelles versions ; vous pouvez définir une versionINACTIVEpour la désactiver sans la supprimer.
| State | Valeurs possibles | Transition contrôlée par |
|---|---|---|
| État de l'image | CREATING, CREATED,
CREATION_FAILED, UPDATING,
UPDATED, UPDATE_FAILED,
DELETING, DELETED,
DELETION_FAILED |
Lambda (automatique) |
| État de la version | PENDING, IN_PROGRESS,
SUCCESSFUL, FAILED |
Lambda (automatique) |
| Activation de la version | ACTIVE, INACTIVE |
Vous (update-microvm-image-version --state) |
Pour exécuter une microVM à partir d'une version, l'état de l'image doit être CREATED ouUPDATED, l'état de la version doit être SUCCESSFUL et la version doit êtreACTIVE.
Note
Ces États sont indépendants. Une image dans l'CREATEDétat peut contenir une version dont l'état estFAILED.
# De-activate a version aws lambda-microvms update-microvm-image-version \ --image-identifier my-image \ --image-version 1.0 \ --state INACTIVE
Variables d’environnement
Les variables d'environnement sont définies au moment de la création de l'image microVM via le environmentVariables champ (50 variables maximum). Ils sont injectés dans le conteneur pendant le processus de création des instantanés. Vous pouvez transmettre des charges utiles définies dynamiquement lors de l'exécution d'une nouvelle microVM. Reportez-vous à la section sur l'exécution de votre microVM pour en savoir plus.
Corriger des images MicroVM
Lorsqu'une nouvelle image de base microVM est disponible, vous pouvez lancer un update-microvm-image appel pour déclencher la création d'une image microVM avec les derniers correctifs, soit en omettant l'base-image-versionargument (pour le dernier), soit en spécifiant l'argument correspondant à la dernière version.
Images de base de conteneur
Lambda MicroVMS exécute votre application en tant que conteneur dans l'environnement du système d'exploitation MicroVM. Vous définissez ce conteneur avec votreDockerfile, et les FROM instructions qu'il contient Dockerfile définissent l'image de base du conteneur pour votre application.
Vous pouvez soit commencer par l'image de conteneur de base Lambda pour Amazon Linux 2023 (public.ecr.aws/lambda/microvms:al2023-minimal) et y ajouter vos Dockerfile instructions, soit utiliser votre propre image de conteneur de base. Lorsque vous utilisez vos propres images de conteneur, validez les exigences suivantes :
Exigences
-
L'image de base du conteneur doit être compatible avec l'architecture du processeur cible.
-
Les images de base de conteneurs provenant de référentiels AWS ECR privés nécessitent le rôle de build
ecr:GetAuthorizationTokenetecr:BatchGetImageles autorisations nécessaires. -
L'image de base du conteneur doit être basée sur un système d'exploitation Linux.
-
Les images de base des conteneurs doivent être accessibles depuis l'infrastructure de construction Lambda (Internet public ou un référentiel ECR dans le même AWS compte).
-
Les images de base du conteneur doivent être compatibles avec les instantanés, voir les instructions ci-dessous.
Snapshot-compatible images de base
Comme Lambda MicroVMS démarre chaque microVM à partir d'un instantané préinitialisé, les images de base doivent être compatibles avec les instantanés. Nous vous recommandons de consulter la section sur l'Considérations de compatibilitéutilisation de vos propres images de base avec Lambda MicroVMS.
Utilisation d'une image ECR privée
Référencez l'image de base de votre conteneur ECR privé dans les FROM instructions de votre Dockerfile :
FROM 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-base:latest WORKDIR /app COPY . . CMD ["./my-app"]
Ajoutez les autorisations suivantes à votre rôle de build :
{ "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }
Capacités du système d'exploitation
Par défaut, les microVM Lambda fonctionnent avec un ensemble standard de fonctionnalités Linux. Vous pouvez accorder des fonctionnalités Linux élevées à l'aide du additionalOsCapabilities champ lors de la création ou de la mise à jour d'une image microVM. La seule valeur prise en charge est ["ALL"]. Les fonctionnalités avancées permettent des opérations telles que le montage de systèmes de fichiers, la création d'espaces de noms réseau ou l'exécution de programmes eBPF. Les fonctionnalités sont appliquées dans les limites d'isolation des machines virtuelles et n'affectent ni l'hôte ni les autres micromachines virtuelles.
aws lambda-microvms create-microvm-image \ --name my-network-tool \ --code-artifact uri=s3://my-bucket/app.zip \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/BuildRole \ --additional-os-capabilities '["ALL"]'