

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
<a name="microvms-getting-started"></a>

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
<a name="microvms-getting-started-prereqs"></a>

Sie benötigen zwei Dinge, bevor Sie beginnen:

1. **Ein Amazon S3 S3-Bucket** in Ihrer bevorzugten AWS Region zum Speichern Ihres Anwendungsartefakts (die ZIP-Datei, die Sie in Schritt 2 erstellen).

1. **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
<a name="microvms-getting-started-first-image"></a>

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
<a name="microvms-getting-started-step1"></a>

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](microvms-images.md)

### Schritt 2: Package und auf Amazon S3 hochladen
<a name="microvms-getting-started-step2"></a>

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
<a name="microvms-getting-started-step3"></a>

Rufen Sie an`create-microvm-image`, um den Build zu starten. Lambda lädt Ihre ZIP-Datei von Amazon S3 herunter, führt Ihre aus`Dockerfile`, 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 in`CREATED`:

```
{
  "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 lautet`CREATE_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
<a name="microvms-getting-started-run"></a>

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
<a name="microvms-getting-started-connect"></a>

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
<a name="microvms-getting-started-cleanup"></a>

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
<a name="microvms-getting-started-next"></a>
+ Erfahren Sie mehr über [Schlüsselkonzepte](microvms-how-it-works.md) den Snapshot-Prozess, die Lebenszyklusstatus und die Basis-Images.
+ Erfahren [MicroVM-Bilder](microvms-images.md) Sie mehr über Image-Build-Hooks, Versionierung und Snapshot-Kompatibilität.
+ SDK-Beispiele, Lifecycle-Hooks und Skalierungsstrategien finden [MicroVMS ausführen](microvms-launching.md) Sie unter.