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.
Erstellen Sie Ihre erste Lambda MicroVM
In diesem Tutorial erfahren Sie, wie Sie ein AWS Lambda MicroVM-Image erstellen und daraus eine MicroVM ausführen. Am Ende haben Sie eine laufende Anwendung, auf die über HTTPS zugegriffen werden kann.
Voraussetzungen
Sie benötigen zwei Dinge, bevor Sie beginnen:
-
Ein Amazon S3 S3-Bucket in Ihrer bevorzugten AWS Region zum Speichern Ihres Anwendungsartefakts (die ZIP-Datei, die Sie in Schritt 2 erstellen).
-
Eine IAM-Build-Rolle, die Lambda bei der Image-Erstellung übernimmt. Lambda verwendet diese Rolle, um Ihr Code-Artefakt von Amazon S3 herunterzuladen und Build-Logs dorthin zu schreiben. CloudWatch
Erstellen Sie die IAM-Rolle mit der folgenden Vertrauensrichtlinie. Dadurch kann der Lambda-Service die Rolle übernehmen:
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "lambda.amazonaws.com" }, "Action": ["sts:AssumeRole", "sts:TagSession"] }] }
Fügen Sie der Rolle die folgende Berechtigungsrichtlinie hinzu. Ersetzen Sie <your-bucket-name> durch Ihren Amazon S3 S3-Bucket-Namen:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": ["s3:GetObject"], "Resource": "arn:aws:s3:::<your-bucket-name>/*" }, { "Effect": "Allow", "Action": ["logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents"], "Resource": "arn:aws:logs:*:*:*" } ] }
Anmerkung
Wenn Sie Daten Dockerfile aus einem privaten AWS ECR-Repository abrufen, fügen Sie der Berechtigungsrichtlinie auch ecr:GetAuthorizationToken und ecr:BatchGetImage hinzu.
Erstellen Sie Ihr erstes MicroVM-Image
Ein MicroVM-Image erfasst Ihre Anwendung in einem vollständig initialisierten Zustand. Wenn Sie eine MicroVM von diesem Image aus ausführen, wird Ihre Anwendung sofort gestartet — ohne Start- oder Initialisierungsverzögerungen.
Schritt 1: Schreiben Sie Ihre Anwendung und Dockerfile
Erstellen Sie einen einfachen HTTP-Server, der in Ihrer MicroVM ausgeführt wird. In diesem Beispiel wird Node.js ohne externe Abhängigkeiten Folgendes verwendet:
app.js
// Minimal HTTP server — listens on port 8080 const http = require('http'); const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'application/json' }); res.end(JSON.stringify({ status: 'ok', path: req.url })); }); server.listen(8080, () => { console.log('Listening on port 8080'); });
Erstellen Sie als Nächstes ein Dockerfile That-Paket und starten Sie Ihre Anwendung:
Dockerfile
# Use a lightweight Node.js runtime for your application layers FROM node:24-alpine # Set the working directory inside the container WORKDIR /app # Copy your application code COPY app.js . # Declare the port your app listens on EXPOSE 8080 # Start the application — Lambda snapshots the running state CMD ["node", "app.js"]
Anmerkung
Die FROM Anweisung legt das Container-Image für Ihre Anwendungsebenen fest. Sie können jedes kompatible Container-Image verwenden. Das von Lambda verwaltete Basis-Image (das das MicroVM-Betriebssystem und die Servicekomponenten bereitstellt) wird --base-image-arn in Schritt 3 separat spezifiziert.
Wenn Ihre Anwendung eindeutige Werte generiert (IDs, Geheimnisse oder kryptografisches Material), verwenden Sie die standardmäßige kryptografisch sichere Pseudozufallszahlengeneratorbibliothek (CSPRNG) Ihrer Sprache, um die Eindeutigkeit auf allen MicroVMs sicherzustellen. Wenn Ihre Anwendung OpenSSL verwendet, verwenden Sie das Lambda-Basiscontainer-Image, das eine Snapshot-kompatible Version enthält. Einzelheiten finden Sie im Abschnitt zur Snapshot-Kompatibilität unter. MicroVM-Bilder
Schritt 2: Package und auf Amazon S3 hochladen
Package Sie Ihr app.js Land Dockerfile in ein ZIP-Archiv und laden Sie es dann in Ihren Amazon S3 S3-Bucket hoch. Führen Sie die folgenden Befehle in Ihrem Terminal aus:
zip app.zip app.js Dockerfile aws s3 cp app.zip s3://your-bucket-name/app.zip
Schritt 3: Erstellen Sie das MicroVM-Image
Rufen Sie ancreate-microvm-image, um den Build zu starten. Lambda lädt Ihre ZIP-Datei von Amazon S3 herunter, führt Ihre ausDockerfile, startet Ihre Anwendung und erfasst einen Firecracker-Snapshot des vollständig initialisierten Zustands:
aws lambda-microvms create-microvm-image \ --name my-first-microvm-image \ --code-artifact uri=s3://your-bucket-name/app.zip \ --base-image-arn arn:aws:lambda:us-east-1:aws:microvm-image:al2023-1 \ --build-role-arn arn:aws:iam::123456789012:role/MicrovmBuildRole
Das Image startet im Status. CREATING Überprüfen Sie den Build-Status mit:
aws lambda-microvms get-microvm-image \ --image-identifier my-first-microvm-image
Wenn der Build abgeschlossen ist, ändert sich das state Feld inCREATED:
{ "imageName": "my-first-microvm-image", "imageArn": "arn:aws:lambda:us-east-1:123456789012:microvm-image:my-first-microvm-image", "state": "CREATED", "imageVersion": "1.0", ... }
Wenn der Status lautetCREATE_FAILED, überprüfen Sie, ob sich der Build CloudWatch unter anmeldet/aws/lambda/microvms/my-first-microvm-image.
Führen Sie Ihre erste MicroVM aus
Sobald Ihr MicroVM-Image den CREATED Status erreicht hat, können Sie MicroVMs von dort aus ausführen. Jedes Image kann viele MicroVMs starten — eine pro Mandant, Benutzersitzung oder Job.
Führen Sie eine MicroVM mit dem folgenden Befehl aus:
aws lambda-microvms run-microvm \ --image-identifier my-first-microvm-image \ --ingress-network-connectors "arn:aws:lambda:us-east-1:aws:network-connector:aws-network-connector:ALL_INGRESS" \ --egress-network-connectors "arn:aws:lambda:us-east-1:aws:network-connector:aws-network-connector:INTERNET_EGRESS" \ --idle-policy '{"autoResumeEnabled":true,"maxIdleDurationSeconds":900,"suspendedDurationSeconds":300}'
Die Parameter werden erklärt:
-
--ingress-network-connectors— Aktiviert eingehenden HTTPS-Verkehr zu Ihrer MicroVM an allen Ports. Dies ist ein Connector Lambda-managed. -
--egress-network-connectors— Ermöglicht den ausgehenden Internetzugang von Ihrer MicroVM aus. Dies ist ein Lambda-managed Anschluss. -
--idle-policy— Konfiguriert das automatische Verhalten beim Anhalten und Wiederaufnehmen. Diese Richtlinie unterbricht die MicroVM nach 15 Minuten Inaktivität, hält sie für bis zu 5 Minuten im Ruhezustand und wird automatisch wieder aufgenommen, wenn Datenverkehr eingeht.
Die Antwort umfasst die MicroVM-ID und die Endpunkt-URL:
{ "microvmId": "mvm-01234567-abcd-ef01-2345-6789abcdef01", "state": "PENDING", "endpoint": "mvm-01234567-abcd-ef01-2345-6789abcdef01.lambda-microvm.us-east-1.on.aws", ... }
Warten Sie, bis der Status den folgenden Wert erreicht RUNNING hat:
aws lambda-microvms get-microvm \ --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01
Stellen Sie eine Verbindung zu Ihrer MicroVM her
Für alle Anfragen an einen MicroVM-Endpunkt ist ein Authentifizierungstoken erforderlich. Generieren Sie eines mit:
aws lambda-microvms create-microvm-auth-token \ --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01 \ --expiration-in-minutes 30 \ --allowed-ports '[{"allPorts":{}}]'
Die Antwort enthält ein Token im authToken Feld. Verwenden Sie es, um eine Anfrage an Ihre laufende Anwendung zu senden:
curl https://mvm-01234567-abcd-ef01-2345-6789abcdef01.lambda-microvm.us-east-1.on.aws/ \ -H "X-aws-proxy-auth:<token-value>"
Sie sollten die Antwort Ihrer Anwendung sehen:
{"status":"ok","path":"/"}
Ihre MicroVM läuft und versorgt den Datenverkehr. Die Anwendung, die Sie in Schritt 1 geschrieben haben, ist auf der Endpunkt-URL live.
Bereinigen
Um laufende Gebühren zu vermeiden, beenden Sie die MicroVM, wenn Sie fertig sind:
aws lambda-microvms terminate-microvm \ --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01
Nächste Schritte
-
Erfahren Sie mehr über Schlüsselkonzepte den Snapshot-Prozess, die Lebenszyklusstatus und die Basis-Images.
-
Erfahren MicroVM-Bilder Sie mehr über Image-Build-Hooks, Versionierung und Snapshot-Kompatibilität.
-
SDK-Beispiele, Lifecycle-Hooks und Skalierungsstrategien finden MicroVMS ausführen Sie unter.