Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
MicroVM-Bilder
In diesem Abschnitt wird beschrieben, wie MicroVM-Images erstellt, konfiguriert, aktualisiert und verwaltet werden.
Ein MicroVM-Image ist eine Ressource, die das Dateisystem und die Anwendungsumgebung einer MicroVM definiert. Das MicroVM-Image umfasst Ihre Laufzeitumgebung, Ihren Anwendungscode und unterstützende Programme wie Hintergrundprozesse und Observability-Agenten. Um ein MicroVM-Image zu erstellen, stellen Sie ein Zip-Paket bereit, das a Dockerfile und Ihre Anwendungsartefakte enthält, die Sie auf Amazon S3 hochladen. Ihr Dockerfile definiert, wie Ihre Anwendung verpackt ist. Lambda erstellt Ihr Anwendungscontainer-Image, indem es Ihr Dockerfile auf einer Betriebssystemumgebung ausführt, die von einem Lambda-managed MicroVM-Basisimage bereitgestellt wird. MicroVM-Basis-Images werden unten im Abschnitt mit dem Titel — beschrieben. MicroVM-Basisimages
Sie können Ihre MicroVM-Basis-Images aktualisieren, um den Anwendungscode oder die Konfiguration für Ihre MicroVMs zu aktualisieren. Jedes Update, das Sie auslösen, erstellt eine neue MicroVM-Image-Version.
So erstellt Lambda ein MicroVM-Image
Wenn Sie ein MicroVM-Image erstellen, Lambda:
-
Ruft Ihre verpackten Artefakte von Amazon S3 ab.
-
Startet eine neue MicroVM vom Lambda-managed Basis-Image aus.
-
Führt die Anweisungen in Ihrem aus.
Dockerfile -
Startet Ihre Anwendung mit der
CMDAnweisungENTRYPOINToder. -
Wartet auf den Abschluss der Initialisierung, signalisiert durch Ihren Lifecycle-Hook.
-
Erfasst einen Snapshot des Festplatten- und Speicherstatus.
Sobald der Snapshot-Vorgang abgeschlossen ist, wechselt Ihr MicroVM-Image in den CREATED Status. Sie können dieses MicroVM-Image jetzt verwenden, um eine MicroVM zu erstellen, und jedes MicroVM-Image kann verwendet werden, um mehrere unabhängige MicroVMs zu erstellen. Ein vom MicroVM-Image ausgeführter MicroVM-Lauf wird direkt aus dem Snapshot-Zustand wieder aufgenommen, was für schnelle Startzeiten sorgt. Jedes MicroVM-Image kann bis zu dem für Ihr Konto verfügbaren Limit für den Betrieb mehrerer MicroVMs verwendet werden.
Eine schrittweise Anleitung zum Verpacken Ihres Codes und zum Erstellen Ihres ersten MicroVM-Images finden Sie unter. Erstellen Sie Ihre erste MicroVM
Dimensionierung von MicroVMs
Lambda MicroVMS verwendet ein Baseline-Peak-Modell, das es überflüssig macht, jede Rechenumgebung für Spitzenaktivitäten richtig zu dimensionieren. Sie konfigurieren die grundlegenden Rechenressourcen für Ihre microVM. Bei Spitzenaktivität kann Ihre microVM automatisch vertikal bis auf das Vierfache der Basisleistung skaliert werden. Sie zahlen den Basistarif, während Ihre microVM läuft, und zahlen nur für das, was Sie über dem Basiswert hinaus aktiv nutzen, und zwar pro Sekunde.
Sie legen die Basislinie über den memory Parameter fest, wenn Sie Ihr MicroVM-Image erstellen. vCPU wird proportional zum Arbeitsspeicher skaliert (2 GB = 1 vCPU). Die Standardbasislinie ist 2 GB /1 vCPU.
In der folgenden Tabelle sind die verfügbaren Größen aufgeführt:
| Basislinie | Höhepunkt | Maximaler Festplattenspeicher |
|---|---|---|
| 0,5 GB Arbeitsspeicher, 0,25 vCPU | 2 GB Arbeitsspeicher, 1 vCPU | 8 GB |
| 1 GB Arbeitsspeicher, 0,5 vCPU | 4 GB Arbeitsspeicher, 2 vCPU | 8 GB |
| 2 GB Arbeitsspeicher, 1 vCPU (Standard) | 8 GB Arbeitsspeicher, 4 vCPU | 8 GB |
| 4 GB Arbeitsspeicher, 2 vCPU | 16 GB Arbeitsspeicher, 8 vCPU | 16 GB |
| 8 GB Arbeitsspeicher, 4 vCPU | 32 GB Arbeitsspeicher, 16 vCPU | 32 GB |
MicroVM-Basisimages
Ein MicroVM-Basisimage dient als Grundlage für Ihre MicroVM-Basisimages. Lambda veröffentlicht ein MicroVM-Basisimage, das das Betriebssystem Amazon Linux 2023 und die für den Betrieb von MicroVMs erforderlichen Servicekomponenten bereitstellt. Wenn Sie ein MicroVM-Image erstellen oder aktualisieren, startet Lambda eine neue MicroVM von diesem Basis-Image aus und führt Ihre Dockerfile Anweisungen in dieser Betriebssystemumgebung aus.
Lambda veröffentlicht regelmäßig neue Versionen von service-verwalteten MicroVM-Basisimages, z. B. beim Anwenden von Sicherheitspatches, um das Betriebssystem oder die Servicekomponenten zu aktualisieren. Standardmäßig gilt die neueste Version eines vom Service verwalteten Basis-Images, wenn Sie creating/updating Ihre eigenen MicroVM-Images sind. Zur Problembehandlung oder zum Debuggen können Sie optional die Version der vom Service verwalteten Images überschreiben, wenn Sie mithilfe des Parameters Ihr eigenes MicroVM-Image erstellen. base-image-version
Basis-Image-Versionen folgen einem Lebenszyklus, in dem sie veraltet sind:
-
AVAILABLE— Aktuell, zur Verwendung empfohlen. -
DEPRECATED(60 Tage) — Eine neuere Version ist vorhanden. Sie können immer noch bauen und ausführen. -
EXPIRING(30 Tage) — Es können keine neuen Images erstellt werden. Bestehende Images können weiterhin ausgeführt werden. -
EXPIRED— Kann nicht erstellt oder ausgeführt werden. Erstellen Sie Ihr Image auf einer unterstützten Version neu. -
RECALLED— Aufgrund kritischer Sicherheitsprobleme sofort nicht verfügbar (selten).
Um auf dem neuesten Stand zu bleiben, achten Sie auf Benachrichtigungen über veraltete Versionen und erstellen Sie Ihre MicroVM-Images neu, wenn eine neue Basis-Image-Version veröffentlicht wird.
Beachten Sie, dass sich das MicroVM-Basis-Image von dem Container-Basis-Image unterscheidet, das Sie in Ihren Dockerfiles angeben. Während Ersteres die Betriebssystemumgebung für Ihre MicroVMS definiert, definiert Letzteres, welches Basis-Container-Image verwendet werden soll, wenn Sie Ihre Anwendung für die Verwendung mit Lambda MicroVMS packen. Weitere Informationen finden Sie im Abschnitt zu Container-Basisimages.
Verwenden Sie die folgenden APIs, um verfügbare verwaltete MicroVM-Basis-Images und deren Versionen zu ermitteln:
# 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 zum Erstellen von MicroVM-Images
Lambda bietet Hooks zum Erstellen von MicroVM-Images, mit denen Sie die Richtigkeit der Anwendung überprüfen und die Leistung bei der Erstellung von MicroVM-Images optimieren können. Hooks werden ausgeführt, bevor Lambda den Snapshot erstellt, der zur Initialisierung jeder MicroVM verwendet wird. Jeder Hook ist ein HTTP-Endpunkt, den Ihre Anwendung verfügbar macht und den Lambda während des Builds aufruft. Indem Sie auf diese Anfragen antworten, kontrollieren und validieren Sie den MicroVM-Image-Erstellungsprozess. Lambda verwendet HTTP-Statuscodes, um festzustellen, ob die Hooks erfolgreich abgeschlossen wurden.
Wichtig
Wenn Sie Hooks konfigurieren, müssen Sie den Port angeben, auf dem Ihre Anwendung auf Hook-Anfragen wartet.
| Hook | Pfad | Details | HTTP-Statuscodes | Zeitüberschreitung |
|---|---|---|---|---|
| /bereit | /aws/lambda-microvms/runtime/v1/ready |
Wird während der Erstellung des MicroVM-Images aufgerufen, nachdem Ihre Anwendung über ENTRYPOINT oder gestartet wurde. CMD Signalisiert, dass Ihre Anwendung bereit ist, einen Snapshot zu erstellen. |
HTTP 503: Noch nicht bereit; Lambda wiederholt es bis zum Timeout. HTTP 200: Die Initialisierung ist abgeschlossen; Lambda erstellt den Snapshot. | 1—3600 Sekunden () readyTimeoutInSeconds |
| /validieren | /aws/lambda-microvms/runtime/v1/validate |
Wird nach Abschluss des Builds auf einer neuen MicroVM aufgerufen, die vom erstellten Image aus gestartet wurde. Bestätigt, dass die Anwendung ordnungsgemäß funktioniert, wenn sie wieder aufgenommen wird. | HTTP 503: Die Validierung benötigt mehr Zeit zum Abschluss; Lambda wiederholt es bis zum Timeout. HTTP 200: Die Validierung wurde bestanden. | 1—3600 Sekunden () validateTimeoutInSeconds |
Wichtig
Wenn Sie HTTP 503 zurückgeben, geben Sie es sofort zurück, anstatt die Anfrage offen zu halten, während Sie warten. Wenn das Timeout abläuft, während eine Anfrage offen gehalten wird, beendet Lambda den Build.
Anmerkung
Sie können auch den Hook /validate verwenden, um die Startzeit zu optimieren. Führen Sie dazu während der Validierung simulierte Payloads aus. Auf diese Weise kann Lambda die abgerufenen Regionen Ihres Snapshots verfolgen und deren Abruf während des MicroVM-Starts optimieren.
Aktualisierung eines MicroVM-Images
Sie können ein vorhandenes MicroVM-Image aktualisieren, indem Sie die update-microvm-image API aufrufen. Jedes Update löst die Erstellung einer neuen MicroVM-Image-Version aus. In der Regel aktualisieren Sie ein MicroVM-Image auf:
-
Neuen Anwendungscode bereitstellen — Zeigen Sie auf ein neues Code-Artefakt (eine neue, auf Amazon S3 hochgeladene ZIP-Datei), um eine neue Version Ihrer Anwendung zu versenden.
-
Wechseln Sie zu einem neueren MicroVM-Basisimage — Ändern Sie den ARN des MicroVM-Basisimages, um auf neuere Versionen des Lambda microVM-Basisimages zu aktualisieren. Weitere Informationen finden Sie unter Patchen von MicroVM-Images und MicroVM-Basisimages.
-
Ändern Sie die Build-Rolle — Aktualisieren Sie den ARN der Build-Rolle, wenn sich die Berechtigungen ändern, die Lambda während des Builds benötigt, z. B. wenn Ihr Code-Artefakt in einen anderen Amazon S3 S3-Bucket verschoben wird oder wenn Sie beginnen, Daten aus einem privaten ECR-Repository abzurufen.
-
Passen Sie die Laufzeitkonfiguration an — Ändern Sie Hooks, Umgebungsvariablen oder Funktionen, um neu zu konfigurieren, wie Ihr MicroVM-Image erstellt und ausgeführt wird.
-
Beschreibung aktualisieren — Ändern Sie die Beschreibung des MicroVM-Images, um aufzuzeichnen, was sich in dieser Version geändert hat.
Der folgende CLI-Befehl zeigt, wie Sie ein MicroVM-Image aktualisieren können. Die --build-role-arn Parameter --base-image-arn und sind bei jedem update-microvm-image Aufruf erforderlich, der einen neuen Build auslöst, auch wenn Sie nur das Codeartefakt ändern. Wenn Sie sie weglassen, ergibt sich Folgendes: 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"
Image-Status und Build-Status
Jedes Mal, wenn Sie ein MicroVM-Image erstellen oder aktualisieren, erstellt Lambda eine neue Version, die aus Ihrem Codeartefakt und Ihrem Basis-Image erstellt wird. Ein MicroVM-Image kann im Laufe der Zeit viele Versionen haben, und Sie führen MicroVMs von einer bestimmten Version aus aus.
Drei unabhängige Staaten verfolgen verschiedene Aspekte des Lebenszyklus:
-
Image-Status — der gesamte Lebenszyklus der MicroVM-Image-Ressource (erstellt, einsatzbereit, aktualisiert, ausgefallen oder gelöscht).
-
Versionsstatus — der Erstellungsfortschritt einer bestimmten Version (ausstehend, erstellt, erfolgreich oder fehlgeschlagen). Suchen Sie nach Fehlerdetails
stateReasonoder CloudWatch protokollieren Sie (/aws/lambda/microvms/<image-name>). -
Versionsaktivierung — ob eine erfolgreich erstellte Version MicroVMS ausführen darf. Lambda setzt neue Versionen auf
ACTIVEautomatisch; Sie können eine Version auf einstellen, um sieINACTIVEzu deaktivieren, ohne sie zu löschen.
| Status | Mögliche Werte | Der Übergang wird gesteuert von |
|---|---|---|
| Status des Bildes | CREATING, CREATED,
CREATION_FAILED, UPDATING,
UPDATED, UPDATE_FAILED,
DELETING, DELETED,
DELETION_FAILED |
Lambda (automatisch) |
| Versionsstatus | PENDING, IN_PROGRESS,
SUCCESSFUL, FAILED |
Lambda (automatisch) |
| Aktivierung der Version | ACTIVE, INACTIVE |
Du (update-microvm-image-version --state) |
Um eine MicroVM von einer Version aus auszuführen, muss der Image-Status CREATED oder seinUPDATED, der Versionsstatus muss seinSUCCESSFUL, und die Version muss seinACTIVE.
Anmerkung
Diese Staaten sind unabhängig. Ein Bild im CREATED Status kann eine Version enthalten, deren Status lautetFAILED.
# De-activate a version aws lambda-microvms update-microvm-image-version \ --image-identifier my-image \ --image-version 1.0 \ --state INACTIVE
Umgebungsvariablen
Umgebungsvariablen werden zum Zeitpunkt der Erstellung des MicroVM-Images über das environmentVariables Feld festgelegt (maximal 50 Variablen). Diese werden während des Snapshot-Build-Prozesses in den Container eingefügt. Sie können dynamisch festgelegte Payloads übergeben, wenn Sie eine neue MicroVM ausführen. Weitere Informationen finden Sie im Abschnitt zum Betrieb Ihrer microVM.
Patchen von MicroVM-Images
Wenn ein neues MicroVM-Basisimage verfügbar ist, können Sie einen update-microvm-image Aufruf ausführen, um einen MicroVM-Image-Build mit den neuesten Patches auszulösen. Dabei können Sie entweder das Argument weglassen (für die neueste Version) oder das base-image-version Argument mit der neuesten Version angeben.
Container-Basisimages
Lambda MicroVMS führt Ihre Anwendung als Container innerhalb der MicroVM-Betriebssystemumgebung aus. Sie definieren diesen Container mit IhremDockerfile, und die FROM Anweisung in Ihrem Dockerfile legt das Container-Basisimage für Ihre Anwendung fest.
Sie können entweder mit dem Lambda-Basiscontainer-Image für Amazon Linux 2023 (public.ecr.aws/lambda/microvms:al2023-minimal) beginnen und Ihre Dockerfile Anweisungen darüber hinzufügen oder Ihr eigenes Basis-Container-Image verwenden. Wenn Sie Ihre eigenen Container-Images verwenden, überprüfen Sie die folgenden Anforderungen:
Voraussetzungen
-
Das Container-Basis-Image muss mit der Ziel-CPU-Architektur kompatibel sein.
-
Für Container-Basis-Images aus privaten AWS ECR-Repositorys müssen die Build-Rolle
ecr:GetAuthorizationTokenundecr:BatchGetImagedie entsprechenden Berechtigungen vorhanden sein. -
Das Container-Basis-Image muss auf einem Linux-Betriebssystem basieren.
-
Container-Basis-Images müssen über die Lambda-Build-Infrastruktur (öffentliches Internet oder ein ECR-Repository im selben AWS Konto) zugänglich sein.
-
Container-Basis-Images müssen Snapshot-kompatibel sein, siehe Anweisungen unten.
Snapshot-compatible Basis-Images
Da Lambda MicroVMS jede MicroVM von einem vorinitialisierten Snapshot aus startet, müssen die Basis-Images Snapshot-kompatibel sein. Wir empfehlen, den Abschnitt zur Erwägungen zur Kompatibilität Verwendung eigener Basis-Images mit Lambda MicroVMS zu lesen.
Verwenden Sie ein privates ECR-Image
Verweisen Sie auf Ihr privates ECR-Container-Basis-Image in der FROM Anleitung Ihres: Dockerfile
FROM 123456789012.dkr.ecr.us-east-1.amazonaws.com/my-base:latest WORKDIR /app COPY . . CMD ["./my-app"]
Fügen Sie Ihrer Build-Rolle die folgenden Berechtigungen hinzu:
{ "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*" }
Funktionen des Betriebssystems
Standardmäßig werden Lambda MicroVMs mit einem Standardsatz von Linux-Funktionen ausgeführt. Sie können erweiterte Linux-Funktionen gewähren, indem Sie das additionalOsCapabilities Feld verwenden, wenn Sie ein MicroVM-Image erstellen oder aktualisieren. Der einzige unterstützte Wert ist ["ALL"]. Erweiterte Funktionen ermöglichen Operationen wie das Mounten von Dateisystemen, das Erstellen von Netzwerk-Namespaces oder das Ausführen eBPF eBPF-Programmen. Funktionen werden innerhalb der Grenzen der VM-Isolierung angewendet und wirken sich nicht auf den Host oder andere Micro-VMs aus.
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"]'