

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.

# Créez votre première microVM Lambda
<a name="microvms-getting-started"></a>

Ce didacticiel vous explique comment créer une image AWS Lambda microVM et exécuter une microVM à partir de celle-ci. À la fin, vous aurez une application en cours d'exécution accessible via HTTPS.

## Conditions préalables
<a name="microvms-getting-started-prereqs"></a>

Vous avez besoin de deux choses avant de commencer :

1. **Un compartiment Amazon S3 ** dans votre AWS région préférée pour stocker l'artefact de votre application (le fichier zip que vous allez créer à l'étape 2).

1. **Un rôle de génération IAM ** que Lambda assume lors de la création de l'image. Lambda utilise ce rôle pour télécharger votre artefact de code depuis Amazon S3 et y écrire des journaux de génération. CloudWatch

Créez le rôle IAM avec la politique de confiance suivante. Cela permet au service Lambda de jouer le rôle suivant :

```
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": { "Service": "lambda.amazonaws.com" },
    "Action": ["sts:AssumeRole", "sts:TagSession"]
  }]
}
```

Associez la politique d'autorisations suivante au rôle. Remplacez `<your-bucket-name>` par le nom de votre compartiment Amazon S3 :

```
{
  "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:*:*:*"
    }
  ]
}
```

**Note**  
Si vous `Dockerfile` extrayez des données à partir d'un référentiel AWS ECR privé, ajoutez également « `ecr:GetAuthorizationToken` et » `ecr:BatchGetImage` à la politique d'autorisations.

## Création de votre première image microVM
<a name="microvms-getting-started-first-image"></a>

Une image microVM capture votre application dans un état complètement initialisé. Lorsque vous exécutez une microVM à partir de cette image, votre application démarre immédiatement, sans délai de démarrage ni d'initialisation.

### Étape 1 : Rédigez votre application et Dockerfile
<a name="microvms-getting-started-step1"></a>

Créez un serveur HTTP simple qui s'exécute dans votre microVM. Cet exemple utilise Node.js sans dépendances externes :

**`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');
});
```

Ensuite, créez un `Dockerfile` package et démarrez votre application :

**`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"]
```

**Note**  
L'`FROM`instruction définit l'image du conteneur pour les couches de votre application. Vous pouvez utiliser n'importe quelle image de conteneur compatible. L'image de base gérée Lambda (qui fournit le système d'exploitation MicroVM et les composants de service) est spécifiée séparément `--base-image-arn` à l'étape 3.  
Si votre application génère des valeurs uniques (identifiants, secrets ou matériel cryptographique), utilisez la bibliothèque CSPRNG (cryptographiquement secure pseudorandom number generator) standard de votre langage pour garantir l'unicité sur toutes les microVM. Si votre application utilise OpenSSL, utilisez l'image du conteneur de base Lambda qui inclut une version compatible avec les snapshots. Pour plus de détails, consultez la section sur la compatibilité des snapshots dans[Images microVM](microvms-images.md).

### Étape 2 : empaqueter et charger sur Amazon S3
<a name="microvms-getting-started-step2"></a>

`app.js`Emballez votre `Dockerfile` annonce dans une archive zip, puis téléchargez-la dans votre compartiment Amazon S3. Exécutez les commandes suivantes dans votre terminal :

```
zip app.zip app.js Dockerfile
aws s3 cp app.zip s3://{{your-bucket-name}}/app.zip
```

### Étape 3 : Création de l'image MicroVM
<a name="microvms-getting-started-step3"></a>

Appelez `create-microvm-image` pour démarrer la construction. Lambda télécharge votre fichier zip depuis Amazon S3, l'exécute`Dockerfile`, démarre votre application et capture un instantané de Firecracker à l'état complètement initialisé :

```
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
```

L'image commence dans `CREATING` cet état. Vérifiez l'état de la construction avec :

```
aws lambda-microvms get-microvm-image \
  --image-identifier my-first-microvm-image
```

Une fois la génération terminée, le `state` champ devient `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",
  ...
}
```

Si c'est le cas`CREATE_FAILED`, vérifiez les journaux de compilation CloudWatch ci-dessous`/aws/lambda/microvms/my-first-microvm-image`.

## Exécution de votre première microVM
<a name="microvms-getting-started-run"></a>

Une fois que votre image MicroVM atteint son `CREATED` état, vous pouvez exécuter MicroVMS à partir de celle-ci. Chaque image peut lancer de nombreuses micromachines virtuelles, une par locataire, session utilisateur ou tâche.

Exécutez une microVM à l'aide de la commande suivante :

```
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}'
```

Paramètres expliqués :
+ `--ingress-network-connectors`— Active le trafic HTTPS entrant vers votre microVM sur tous les ports. Il s'agit d'un Lambda-managed connecteur.
+ `--egress-network-connectors`— Active l'accès Internet sortant depuis votre microVM. Il s'agit d'un Lambda-managed connecteur.
+ `--idle-policy`— Configure le comportement automatique de suspension et de reprise. Cette politique suspend la microVM après 15 minutes d'inactivité, la maintient suspendue jusqu'à 5 minutes et reprend automatiquement à l'arrivée du trafic.

La réponse inclut l'ID de la microVM et l'URL du point de terminaison :

```
{
  "microvmId": "mvm-01234567-abcd-ef01-2345-6789abcdef01",
  "state": "PENDING",
  "endpoint": "mvm-01234567-abcd-ef01-2345-6789abcdef01.lambda-microvm.us-east-1.on.aws",
  ...
}
```

Attendez que l'état atteigne `RUNNING` :

```
aws lambda-microvms get-microvm \
  --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01
```

## Connexion à votre microVM
<a name="microvms-getting-started-connect"></a>

Toutes les demandes adressées à un point de terminaison microVM nécessitent un jeton d'authentification. Générez-en un avec :

```
aws lambda-microvms create-microvm-auth-token \
  --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01 \
  --expiration-in-minutes 30 \
  --allowed-ports '[{"allPorts":{}}]'
```

La réponse inclut un jeton dans le `authToken` champ. Utilisez-le pour envoyer une demande à votre application en cours d'exécution :

```
curl https://mvm-01234567-abcd-ef01-2345-6789abcdef01.lambda-microvm.us-east-1.on.aws/ \
  -H "X-aws-proxy-auth: {{<token-value>}}"
```

Vous devriez voir la réponse de votre candidature :

```
{"status":"ok","path":"/"}
```

Votre microVM est en cours d'exécution et gère le trafic. L'application que vous avez écrite à l'étape 1 est disponible à l'URL du point de terminaison.

## Nettoyage
<a name="microvms-getting-started-cleanup"></a>

Pour éviter des frais permanents, mettez fin à la microVM lorsque vous avez terminé :

```
aws lambda-microvms terminate-microvm \
  --microvm-identifier mvm-01234567-abcd-ef01-2345-6789abcdef01
```

## Étapes suivantes
<a name="microvms-getting-started-next"></a>
+ Apprenez [Concepts de base](microvms-how-it-works.md) à comprendre le processus de capture d'écran, les états du cycle de vie et les images de base.
+ Explorez [Images microVM](microvms-images.md) pour en savoir plus sur les hooks de création d'images, la gestion des versions et la compatibilité des snapshots.
+ Consultez [Exécution de microVMS](microvms-launching.md) des exemples de SDK, des hooks de cycle de vie et des stratégies de mise à l'échelle.
+ Consultez [Intégrations](microvms-integrations.md) les intégrations de services prises en charge.