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 Sie MicroVM-Images erstellen, konfigurieren, aktualisieren und verwalten.
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 Ihre Anwendungsartefakte enthält Dockerfile und die Sie auf Amazon S3 hochladen.
Ihr Dockerfile definiert, wie Ihre Anwendung verpackt wird. Lambda erstellt Ihr Anwendungs-Container-Image, indem es Dockerfile auf einer Betriebssystemumgebung ausgeführt wird, 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-Basisimages aktualisieren, um den Anwendungscode oder die Konfiguration für Ihre MicroVMs zu aktualisieren. Bei jedem Update, das Sie auslösen, wird eine neue MicroVM-Image-Version erstellt.
Wie Lambda ein MicroVM-Image erstellt
Wenn Sie ein MicroVM-Image erstellen, führt Lambda Folgendes aus:
-
Ruft Ihre verpackten Artefakte von Amazon S3 ab.
-
Startet eine neue MicroVM aus dem Lambda-managed Basis-Image.
-
Führt die Anweisungen in Ihrem aus.
Dockerfile -
Startet Ihre Anwendung mithilfe der
CMDAnweisungENTRYPOINToder. -
Wartet auf den Abschluss der Initialisierung, was durch Ihren Lifecycle-Hook signalisiert wird.
-
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. Eine MicroVM, die vom MicroVM-Image aus ausgeführt wird, wird direkt aus dem Snapshot-Status wieder aufgenommen, was für schnelle Startzeiten sorgt. Jedes MicroVM-Image kann verwendet werden, um mehrere MicroVMs auszuführen, bis zu dem für Ihr Konto verfügbaren Limit.
Eine schrittweise Anleitung zum Verpacken Ihres Codes und zum Erstellen Ihres ersten MicroVM-Images finden Sie unter. Erstellen Sie Ihre erste MicroVM
Dimensionierung von MicroVM
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 des Ausgangswerts skalieren. Sie zahlen den Basistarif, während Ihre MicroVM läuft, und zahlen nur für das, was Sie über dem Basispreis hinaus aktiv nutzen, und zwar pro Sekunde.
Sie legen den Basiswert fest, indem Sie den memory Parameter bei der Erstellung Ihres MicroVM-Images verwenden. vCPU skaliert proportional zum Arbeitsspeicher (2 GB = 1 vCPU). Die Standardbasislinie ist 2 GB/1 vCPU.
In der folgenden Tabelle sind die verfügbaren Größen aufgeführt:
| Ausgangswert | Höhepunkt | Maximaler Speicherplatz |
|---|---|---|
| 0,5 GB Speicher, 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 Speicher, 2 vCPU | 16 GB Speicher, 8 vCPU | 16 GB |
| 8 GB Speicher, 4 vCPU | 32 GB Speicher, 16 vCPU | 32 GB |
MicroVM-Basisimages
Ein MicroVM-Basisimage dient als Grundlage für Ihre MicroVM-Images. Lambda veröffentlicht ein MicroVM-Basis-Image, das das Amazon Linux 2023-Betriebssystem 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 der vom Service verwalteten MicroVM-Basis-Images, 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 dienstverwalteten Images überschreiben, wenn Sie mithilfe des Parameters Ihr eigenes MicroVM-Image erstellen. base-image-version
Basis-Image-Versionen folgen einem Verfallszyklus:
-
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-Basisimage 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 verpacken. Weitere Informationen finden Sie im Abschnitt zu Container-Basisimages.
Verwenden Sie die folgenden APIs, um verfügbare verwaltete MicroVM-Basisimages 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 MicroVM-Image-Build-Hooks, mit denen Sie die Richtigkeit der Anwendung überprüfen und die Leistung während der MicroVM-Image-Erstellung 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, steuern und validieren Sie den MicroVM-Image-Erstellungsprozess. Lambda verwendet HTTP-Statuscodes, um zu ermitteln, 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 des MicroVM-Image-Builds aufgerufen, nachdem Ihre Anwendung durch ENTRYPOINT oder gestartet wurde. CMD Signalisiert, dass Ihre Anwendung bereit ist, einen Snapshot zu erstellen. |
HTTP 503: Noch nicht bereit; Lambda versucht es bis zum Timeout erneut. HTTP 200: Die Initialisierung ist abgeschlossen; Lambda erstellt den Snapshot. | 1—360 Sekunden () readyTimeoutInSeconds |
| /validieren | /aws/lambda-microvms/runtime/v1/validate |
Wird nach Abschluss des Builds auf einer neuen MicroVM aufgerufen, die mit dem erstellten Image gestartet wurde. Bestätigt, dass die Anwendung ordnungsgemäß funktioniert, wenn sie fortgesetzt wird. | HTTP 503: Die Validierung benötigt mehr Zeit, um abgeschlossen zu sein; Lambda versucht es erneut, bis das Zeitlimit überschritten ist. HTTP 200: Validierung 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 der 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 Nutzlasten aus. Auf diese Weise kann Lambda die Bereiche Ihres Snapshots verfolgen, auf die zugegriffen wurde, und deren Abruf beim MicroVM-Start 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 den Build einer neuen MicroVM-Image-Version aus. Normalerweise aktualisieren Sie ein MicroVM-Image auf:
-
Neuen Anwendungscode bereitstellen — Verweisen Sie auf ein neues Code-Artefakt (eine neue Zip-Datei, die auf Amazon S3 hochgeladen wurde), um eine neue Version Ihrer Anwendung zu versenden.
-
Zu einem neueren MicroVM-Basis-Image wechseln — Ändern Sie den ARN des MicroVM-Basisimages, um ein Upgrade auf neuere Versionen des Lambda MicroVM-Basis-Images durchzuführen. Weitere Informationen finden Sie unter MicroVM-Image-Patching und MicroVM-Basisimages.
-
Ändern Sie die Build-Rolle — Aktualisieren Sie den Build-Rollen-ARN, wenn die Berechtigungen, die Lambda während des Builds benötigt, geändert werden, z. B. wenn Ihr Code-Artefakt in einen anderen Amazon S3-Bucket verschoben wird oder 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 MicroVM-Image-Beschreibung, 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 Code-Artefakt ändern. Wenn Sie sie weglassen, erhalten Sie 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 Code-Artefakt und Ihrem Basis-Image erstellt wird. Ein MicroVM-Image kann im Laufe der Zeit viele Versionen haben, und Sie führen MicroVMs ab einer bestimmten Version aus.
Drei unabhängige Staaten verfolgen verschiedene Aspekte des Lebenszyklus:
-
Image-Status — der gesamte Lebenszyklus der MicroVM-Image-Ressource (wird erstellt, ist einsatzbereit, wird aktualisiert, ist ausgefallen oder wird gelöscht).
-
Versionsstatus — der Erstellungsfortschritt einer bestimmten Version (ausstehend, erstellt, erfolgreich oder fehlgeschlagen). Überprüfen Sie
stateReasonoder CloudWatch protokollieren Sie (/aws/lambda/microvms/<image-name>), um Einzelheiten zum Fehler anzuzeigen. -
Versionsaktivierung — ob eine erfolgreich erstellte Version MicroVMs ausführen darf. Lambda stellt neue Versionen
ACTIVEautomatisch ein; Sie können eine Version auf auf einstellen, um sie zu deaktivieren, ohne sieINACTIVEzu 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) |
| Status der Version | 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 lautenSUCCESSFUL, und die Version muss ACTIVE lauten.
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 bei der Erstellung des MicroVM-Images über das environmentVariables Feld festgelegt (maximal 50 Variablen). Diese werden während des Snapshot-Erstellungsprozesses in den Container eingefügt. Sie können dynamisch festgelegte Nutzlasten übergeben, wenn Sie eine neue MicroVM ausführen. Weitere Informationen finden Sie im Abschnitt zum Ausführen Ihrer MicroVM.
MicroVM-Image-Patching
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 in der MicroVM-Betriebssystemumgebung aus. Sie definieren diesen Container mit IhremDockerfile, und die FROM Anweisung in Ihrem Dockerfile legt das Container-Basis-Image 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 darüber hinaus Ihre Dockerfile Anweisungen 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-Basisimage muss mit der Ziel-CPU-Architektur kompatibel sein.
-
Für Container-Basis-Images aus privaten AWS ECR-Repositorys ist die Build-Rolle
ecr:GetAuthorizationTokenundecr:BatchGetImage-Berechtigungen erforderlich. -
Das Container-Basis-Image muss auf einem Linux-Betriebssystem basieren.
-
Auf die Container-Basis-Images muss von der Lambda-Build-Infrastruktur aus zugegriffen werden können (öffentliches Internet oder ein ECR-Repository im selben AWS Konto).
-
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 Ihrer eigenen Basis-Images mit Lambda MicroVMS zu lesen.
Verwenden eines privaten ECR-Images
Referenzieren Sie 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 von eBPF-Programmen. Funktionen werden innerhalb der Isolationsgrenze der virtuellen Maschine angewendet und wirken sich nicht auf den Host oder andere MicroVMs 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"]'