

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éation d'une AWS ParallelCluster AMI personnalisée
<a name="building-custom-ami-v3"></a>

Lorsque vous utilisez l'interface de ligne de AWS ParallelCluster commande (CLI) ou l'API, vous ne payez que pour les AWS ressources créées lorsque vous créez ou mettez à jour AWS ParallelCluster des images et des clusters. Pour de plus amples informations, veuillez consulter [AWS services utilisés par AWS ParallelCluster](aws-services-v3.md).

**Important**  
Si vous créez une AMI personnalisée, vous devez répéter les étapes que vous avez utilisées pour créer votre AMI personnalisée à chaque nouvelle AWS ParallelCluster version.

Avant de poursuivre votre lecture, nous vous recommandons de consulter d'abord [Actions de bootstrap personnalisées](custom-bootstrap-actions-v3.md) cette section. Déterminez si les modifications que vous souhaitez apporter peuvent être scriptées et prises en charge dans les AWS ParallelCluster versions futures.

Même si la création d'une AMI personnalisée n'est généralement pas idéale, il existe des scénarios spécifiques dans lesquels il AWS ParallelCluster est nécessaire de créer une AMI personnalisée pour. Ce didacticiel explique comment créer une AMI personnalisée pour ces scénarios.

**Conditions préalables**
+ AWS ParallelCluster [est installé](install-v3-parallelcluster.md).
+ Le AWS CLI [est installé et configuré.](https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html)
+ Vous possédez une paire de [clés Amazon EC2](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-key-pairs.html).
+ Vous disposez d'un rôle IAM avec les [autorisations](iam-roles-in-parallelcluster-v3.md#iam-roles-in-parallelcluster-v3-example-user-policies) requises pour exécuter la [`pcluster`](pcluster-v3.md) CLI et créer des images.

## Comment personnaliser l' AWS ParallelCluster AMI
<a name="how-to-customize-the-aws-parallelcluster-ami-v3"></a>

Il existe deux manières de créer une AWS ParallelCluster AMI personnalisée. L'une de ces deux méthodes consiste à créer une nouvelle AMI à l'aide de la AWS ParallelCluster CLI. Une autre méthode nécessite que vous apportiez des modifications manuelles pour créer une nouvelle AMI disponible sous votre Compte AWS.

## Créez une AWS ParallelCluster AMI personnalisée
<a name="build-a-custom-aws-parallelcluster-ami-v3"></a>

Si vous disposez d'une AMI et d'un logiciel personnalisés, vous pouvez appliquer les modifications nécessaires par-dessus. AWS ParallelCluster AWS ParallelCluster s'appuie sur le service EC2 Image Builder pour créer AMIs des produits personnalisés. Pour plus d'informations, consultez le [guide de l'utilisateur d'Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/what-is-image-builder.html).

Points clés :
+ Le processus dure environ 1 heure. Cette durée peut varier s'il y a un [`Build`](Build-v3.md)/supplémentaire [`Components`](Build-v3.md#Build-v3-Components)à installer au moment de la construction.
+ L'AMI est étiquetée avec les versions des principaux composants. Il s'agit notamment du noyau, du planificateur et du pilote [EFA](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/efa.html). Un sous-ensemble des versions des composants est également indiqué dans la description de l'AMI.
+ À partir de la AWS ParallelCluster version 3.0.0, un nouvel ensemble de commandes CLI peut être utilisé pour gérer le cycle de vie des images. Cela inclut [`build-image`](pcluster.build-image-v3.md), [`list-images`](pcluster.list-images-v3.md), [`describe-image`](pcluster.describe-image-v3.md) et [`delete-image`](pcluster.delete-image-v3.md).
+ Cette méthode est reproductible. Vous pouvez le réexécuter pour rester à AMIs jour (par exemple, les mises à jour du système d'exploitation), puis les utiliser lorsque vous mettez à jour un cluster existant.

**Note**  
Si vous utilisez cette méthode dans la partition AWS Chine, vous risquez de rencontrer des erreurs réseau. Par exemple, ces erreurs peuvent apparaître dans la `pcluster build-image` commande lorsqu'elle télécharge des packages depuis GitHub ou depuis un référentiel du système d'exploitation. Dans ce cas, nous vous recommandons d'utiliser l'une des méthodes alternatives suivantes :  
Suivez l'[Modifier une AWS ParallelCluster AMI](#modify-an-aws-parallelcluster-ami-v3)approche qui contourne cette commande.
Créez l'image dans une autre partition ou région, par exemple`us-east-1`, puis store/restore déplacez-la vers la région de Chine. Pour plus d’informations, consultez [Stockage et restauration d’une AMI à l’aide de S3](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ami-store-restore.html) dans le *Guide de l’utilisateur Amazon EC2*.

Étapes :

1. Configurez vos Compte AWS informations d'identification afin que le AWS ParallelCluster client puisse appeler les opérations d' AWS API en votre nom. Pour obtenir la liste des autorisations requises, consultez [Gestion des identités et des accès AWS autorisations dans AWS ParallelCluster](iam-roles-in-parallelcluster-v3.md).

1. Créez un fichier de configuration *d'image de construction* de base. Pour ce faire, spécifiez le [`InstanceType`](Build-v3.md#yaml-build-image-Build-InstanceType)à utiliser pour créer l'image et le [`ParentImage`](Build-v3.md#yaml-build-image-Build-ParentImage). Ils sont utilisés comme point de départ pour créer l'AMI. Pour plus d'informations sur les paramètres de construction facultatifs, consultez la section [Configuration de l'image](image-builder-configuration-file-v3.md).

   ```
   Build:
    InstanceType: <BUILD_INSTANCE_TYPE>
    ParentImage: <BASE_AMI_ID>
   ```

1. Utilisez la commande CLI [`pcluster build-image`](pcluster.build-image-v3.md)pour créer une AWS ParallelCluster AMI à partir de l'AMI que vous fournissez comme base.

   ```
   $ pcluster build-image --image-id IMAGE_ID --image-configuration IMAGE_CONFIG.yaml --region REGION
       {
    "image": {
      "imageId": "IMAGE_ID",
      "imageBuildStatus": "BUILD_IN_PROGRESS",
      "cloudformationStackStatus": "CREATE_IN_PROGRESS",
      "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678",
      "region": "us-east-1",
      "version": "3.15.0"
    }
   }
   ```
**Avertissement**  
`pcluster build-image`utilise le VPC par défaut. Si vous supprimez le VPC par défaut en utilisant AWS Control Tower ou AWS Landing Zone, l'ID de sous-réseau doit être spécifié dans le fichier de configuration de l'image. Pour de plus amples informations, veuillez consulter [`SubnetId`](HeadNode-v3.md#yaml-HeadNode-Networking-SubnetId).

   Pour obtenir la liste des autres paramètres, consultez la page de référence des [`pcluster build-image`](pcluster.build-image-v3.md)commandes. Les résultats de la commande précédente sont les suivants :
   + Une CloudFormation pile est créée en fonction de la configuration de l'image. La pile inclut toutes les ressources EC2 Image Builder requises pour le build.
   + Les ressources créées incluent les AWS ParallelCluster composants officiels d'Image Builder auxquels des composants Image Builder personnalisés peuvent être ajoutés. Pour plus d'informations, consultez la section [Création d'un composant personnalisé avec Image Builder](https://docs.aws.amazon.com/imagebuilder/latest/userguide/create-component.html) dans le guide de l'*utilisateur d'EC2 Image Builder*.
   + EC2 Image Builder lance une instance de build, applique AWS ParallelCluster le livre de recettes, installe AWS ParallelCluster la pile logicielle et effectue les tâches de configuration nécessaires. Le AWS ParallelCluster livre de recettes est utilisé pour construire et démarrer. AWS ParallelCluster
   + L'instance est arrêtée et une nouvelle AMI est créée à partir de celle-ci.
   + Une autre instance est lancée à partir de l'AMI nouvellement créée. Pendant la phase de test, EC2 Image Builder exécute des tests définis dans les composants Image Builder.
   + Si la construction est réussie, la pile est supprimée. Si la construction échoue, la pile est conservée et disponible pour inspection.

1. Vous pouvez surveiller l'état du processus de génération en exécutant la commande suivante. Une fois la compilation terminée, vous pouvez l'exécuter pour récupérer l'ID d'AMI indiqué dans la réponse.

   ```
   $ pcluster describe-image --image-id IMAGE_ID --region REGION
       
   # BEFORE COMPLETE
   {
    "imageConfiguration": {
      "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.amazonaws.com/parallelcluster/3.15.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?...",
    },
    "imageId": "IMAGE_ID",
    "imagebuilderImageStatus": "BUILDING",
    "imageBuildStatus": "BUILD_IN_PROGRESS",
    "cloudformationStackStatus": "CREATE_IN_PROGRESS",
    "cloudformationStackArn": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678",
    "region": "us-east-1",
    "version": "3.15.0",
    "cloudformationStackTags": [
      {
        "value": "3.15.0",
        "key": "parallelcluster:version"
      },
      {
        "value": "IMAGE_ID",
        "key": "parallelcluster:image_name"
      },
      ...
    ],
    "imageBuildLogsArn": "arn:aws:logs:us-east-1:123456789012:log-group:/aws/imagebuilder/ParallelClusterImage-IMAGE_ID",
    "cloudformationStackCreationTime": "2022-04-05T21:36:26.176Z"
   }
   
   # AFTER COMPLETE
   {
    "imageConfiguration": {
      "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.15.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..."
    },
    "imageId": "IMAGE_ID",
    "imageBuildStatus": "BUILD_COMPLETE",
    "region": "us-east-1",
    "ec2AmiInfo": {
        "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z",
        "amiId": "ami-1234stuv5678wxyz",
        "description": "AWS ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1",
        "state": "AVAILABLE",
        "tags": [
         {
           "value": "2021.3.11591-1.el7.x86_64",
           "key": "parallelcluster:dcv_version"
         },
         ...
        ],
      "architecture": "x86_64"
    },
    "version": "3.15.0"      
   }
   ```

1. Pour créer votre cluster, entrez l'ID de l'AMI dans le [`CustomAmi`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Image-CustomAmi)champ de configuration de votre cluster.

**Résolution des problèmes et surveillance du processus de création d'AMI**

La création de l'image se termine en une heure environ. Vous pouvez surveiller le processus en exécutant la [`pcluster describe-image`](pcluster.describe-image-v3.md)commande ou les commandes de récupération du journal.

```
$ pcluster describe-image --image-id IMAGE_ID --region REGION
```

La [`build-image`](pcluster.build-image-v3.md)commande crée une CloudFormation pile contenant toutes les ressources Amazon EC2 nécessaires à la création de l'image et lance le processus EC2 Image Builder.

Après avoir exécuté la [`build-image`](pcluster.build-image-v3.md)commande, il est possible de récupérer les événements de la CloudFormation pile en utilisant [`pcluster get-image-stack-events`](pcluster.get-image-stack-events-v3.md). Vous pouvez filtrer les résultats à l'aide du `--query` paramètre pour voir les derniers événements. Pour plus d'informations, consultez la section [Filtrage AWS CLI de la sortie](https://docs.aws.amazon.com/cli/latest/userguide/cli-usage-filter.html) dans le *guide de AWS Command Line Interface l'utilisateur*.

```
$ pcluster get-image-stack-events --image-id IMAGE_ID --region REGION --query "events[0]"
{
 "eventId": "ParallelClusterImage-CREATE_IN_PROGRESS-2022-04-05T21:39:24.725Z",
 "physicalResourceId": "arn:aws:imagebuilder:us-east-1:123456789012:image/parallelclusterimage-IMAGE_ID/3.15.0/1",
 "resourceStatus": "CREATE_IN_PROGRESS",
 "resourceStatusReason": "Resource creation Initiated",
 "resourceProperties": "{\"InfrastructureConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:infrastructure-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"ImageRecipeArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:image-recipe/parallelclusterimage-IMAGE_ID/3.15.0\",\"DistributionConfigurationArn\":\"arn:aws:imagebuilder:us-east-1:123456789012:distribution-configuration/parallelclusterimage-abcd1234-ef56-gh78-ij90-1234abcd5678\",\"Tags\":{\"parallelcluster:image_name\":\"IMAGE_ID\",\"parallelcluster:image_id\":\"IMAGE_ID\"}}",
 "stackId": "arn:aws:cloudformation:us-east-1:123456789012:stack/IMAGE_ID/abcd1234-ef56-gh78-ij90-1234abcd5678",
 "stackName": "IMAGE_ID",
 "logicalResourceId": "ParallelClusterImage",
 "resourceType": "AWS::ImageBuilder::Image",
 "timestamp": "2022-04-05T21:39:24.725Z"
}
```

Après environ 15 minutes, les événements de la pile apparaissent dans l'entrée du journal des événements liés à la création d'Image Builder. Vous pouvez désormais répertorier les flux de journaux d'images et suivre les étapes de l'Image Builder à l'aide [`pcluster list-image-log-streams`](pcluster.list-image-log-streams-v3.md)des [`pcluster get-image-log-events`](pcluster.get-image-log-events-v3.md)commandes and.

```
$ pcluster list-image-log-streams --image-id IMAGE_ID --region REGION \
    --query 'logStreams[*].logStreamName'

 "3.15.0/1"
]

$ pcluster get-image-log-events --image-id IMAGE_ID --region REGION \
--log-stream-name 3.15.0/1 --limit 3
{
 "nextToken": "f/36295977202298886557255241372854078762600452615936671762",
 "prevToken": "b/36295977196879805474012299949460899222346900769983430672",
 "events": [
   {
     "message": "ExecuteBash: FINISHED EXECUTION",
     "timestamp": "2022-04-05T22:13:26.633Z"
   },
   {
     "message": "Document arn:aws:imagebuilder:us-east-1:123456789012:component/parallelclusterimage-test-abcd1234-ef56-gh78-ij90-1234abcd5678/3.15.0/1",
     "timestamp": "2022-04-05T22:13:26.741Z"
   },
   {
     "message": "TOE has completed execution successfully",
     "timestamp": "2022-04-05T22:13:26.819Z"
   }
 ]
}
```

Continuez à vérifier la [`describe-image`](pcluster.describe-image-v3.md)commande jusqu'à ce que vous voyiez le `BUILD_COMPLETE` statut.

```
$ pcluster describe-image --image-id IMAGE_ID --region REGION
{
 "imageConfiguration": {
   "url": "https://parallelcluster-1234abcd5678efgh-v1-do-not-delete.s3.us-east-1.amazonaws.com/parallelcluster/3.15.0/images/IMAGE_ID-abcd1234efgh5678/configs/image-config.yaml?Signature=..."
 },
 "imageId": "IMAGE_ID",
 "imageBuildStatus": "BUILD_COMPLETE",
 "region": "us-east-1",
 "ec2AmiInfo": {
     "amiName": "IMAGE_ID 2022-04-05T21-39-24.020Z",
     "amiId": "ami-1234stuv5678wxyz",
     "description": "AWS ParallelCluster AMI for alinux2, kernel-4.14.238-182.422.amzn2.x86_64, lustre-2.10.8-5.amzn2.x86_64, efa-1.13.0-1.amzn2.x86_64, dcv-2021.1.10598-1.el7.x86_64, slurm-20-11-8-1",
     "state": "AVAILABLE",
     "tags": [
      {
        "value": "2021.3.11591-1.el7.x86_64",
        "key": "parallelcluster:dcv_version"
      },
      ...
     ],
   "architecture": "x86_64"
 },
 "version": "3.15.0"      
}
```

Si vous devez résoudre un problème de création d'AMI personnalisée, créez une archive des journaux d'images comme décrit dans les étapes suivantes.

Il est possible d'archiver les journaux dans un compartiment Amazon S3 ou dans un fichier local, selon le `--output` paramètre.

```
$ pcluster export-image-logs --image-id IMAGE_ID --region REGION \
--bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER
{
 "url": "https://BUCKET_NAME.s3.us-east-1.amazonaws.com/BUCKET-FOLDER/IMAGE_ID-logs-202209071136.tar.gz?AWSAccessKeyId=..."
}

$ pcluster export-image-logs --image-id IMAGE_ID \
--region REGION --bucket BUCKET_NAME --bucket-prefix BUCKET_FOLDER --output-file /tmp/archive.tar.gz
{
 "path": "/tmp/archive.tar.gz"
}
```

L'archive contient les flux de CloudWatch logs liés au processus Image Builder et aux événements de CloudFormation stack. L'exécution de la commande peut prendre plusieurs minutes.

 **Gestion personnalisée AMIs** 

À partir de la AWS ParallelCluster version 3.0.0, un nouvel ensemble de commandes a été ajouté à la CLI pour créer, surveiller et gérer le cycle de vie des images. Pour plus d'informations sur les commandes, consultez la section [commandes pcluster](pcluster-v3.md).

## Modifier une AWS ParallelCluster AMI
<a name="modify-an-aws-parallelcluster-ami-v3"></a>

Cette méthode consiste à modifier une AWS ParallelCluster AMI officielle en y ajoutant une personnalisation. La base AWS ParallelCluster AMIs est mise à jour avec les nouvelles versions. Ils AMIs contiennent tous les composants nécessaires AWS ParallelCluster au fonctionnement lors de leur installation et de leur configuration. Vous pouvez commencer par l'un d'entre eux comme base.

Points clés :
+ Cette méthode est plus rapide que la [`build-image`](pcluster.build-image-v3.md)commande. Cependant, il s'agit d'un processus manuel qui ne se répète pas automatiquement.
+ Avec cette méthode, vous n'avez pas accès aux commandes de récupération des journaux et de gestion du cycle de vie des images disponibles via la CLI.

Étapes :

------
#### [ New Amazon EC2 console ]

1. Trouvez l'AMI qui correspond à l'AMI spécifique Région AWS que vous utilisez. Pour le trouver, utilisez la [`pcluster list-official-images`](pcluster.list-official-images-v3.md)commande avec le `--region` paramètre pour sélectionner les `--architecture` paramètres spécifiques Région AWS `--os` et à filtrer pour l'AMI souhaitée avec le système d'exploitation et l'architecture que vous souhaitez utiliser. À partir de la sortie, récupérez l'identifiant de l'image Amazon EC2.

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans le volet de navigation, choisissez **Images**, puis **AMIs**. Recherchez l'ID d'image EC2 récupéré, sélectionnez l'AMI, puis choisissez **Launch instance from AMI**.

1. Faites défiler la page vers le bas et choisissez votre **type d'instance**.

1. Choisissez votre **paire de clés** et **lancez votre instance**.

1. Connectez-vous à votre instance à l'aide de l'utilisateur du système d'exploitation et de votre SSH clé.

1. Personnalisez manuellement votre instance pour répondre à vos besoins.

1. Exécutez la commande suivante pour préparer votre instance pour la création d'AMI.

   ```
   sudo /usr/local/sbin/ami_cleanup.sh
   ```

1. Dans la console, choisissez **Instance state** et **Stop instance**.

   Accédez à **Instances**, choisissez la nouvelle instance, sélectionnez **État de l'instance** et **Arrêtez l'instance**.

1. [Créez une nouvelle AMI à partir de l'instance à l'aide de la console Amazon EC2 ou AWS CLI de la commande create-image.](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html)

**Depuis la console Amazon EC2**

   1. Choisissez **Instances** dans le volet de navigation.

   1. Choisissez l'instance que vous avez créée et modifiée.

   1. Dans **Actions**, choisissez **Image**, puis **Créer une image**.

   1. Choisissez **Créer une image**.

1. Entrez le nouvel ID AMI dans le [`CustomAmi`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Image-CustomAmi)champ de configuration de votre cluster et créez un cluster.

------
#### [ Old Amazon EC2 console ]

1. Trouvez l' AWS ParallelCluster AMI qui correspond à l'AMI spécifique Région AWS que vous utilisez. Pour le trouver, vous pouvez utiliser la [`pcluster list-official-images`](pcluster.list-official-images-v3.md)commande avec le `--region` paramètre pour sélectionner les `--architecture` paramètres spécifiques Région AWS `--os` et à filtrer pour l'AMI souhaitée avec le système d'exploitation et l'architecture que vous souhaitez utiliser. À partir de la sortie, vous pouvez récupérer l'identifiant de l'image Amazon EC2.

1. Connectez-vous à la console Amazon EC2 AWS Management Console et ouvrez-la à l'adresse. [https://console.aws.amazon.com/ec2/](https://console.aws.amazon.com/ec2/)

1. Dans le volet de navigation, choisissez **Images**, puis **AMIs**. Définissez le filtre pour les **images publiques** et recherchez l'ID d'image EC2 récupéré, sélectionnez l'AMI, puis choisissez **Launch**.

1. Choisissez votre type d'instance et sélectionnez **Suivant : Configurer les détails de l'instance** ou **Vérifier et lancer** pour lancer votre instance.

1. Choisissez **Launch**, sélectionnez votre **paire de clés** et **lancez les instances**.

1. Connectez-vous à votre instance à l'aide de l'utilisateur du système d'exploitation et de votre clé SSH. Pour plus d'informations, accédez à **Instances**, sélectionnez la nouvelle instance et **Connect**.

1. Personnalisez manuellement votre instance pour répondre à vos besoins.

1. Exécutez la commande suivante pour préparer votre instance pour la création d'une AMI :

   ```
   sudo /usr/local/sbin/ami_cleanup.sh
   ```

1. **Depuis la console Amazon EC2, choisissez **Instances** dans le volet de navigation, sélectionnez votre nouvelle instance et choisissez **Actions**, **Instance State** et Stop.**

1. [Créez une nouvelle AMI à partir de l'instance à l'aide de la console Amazon EC2 ou AWS CLI de la commande create-image.](https://docs.aws.amazon.com/cli/latest/reference/ec2/create-image.html)

**Depuis la console Amazon EC2**

   1. Choisissez **Instances** dans le volet de navigation.

   1. Choisissez l'instance que vous avez créée et modifiée.

   1. Dans **Actions**, choisissez **Image**, puis **Créer une image**.

   1. Choisissez **Créer une image**.

1. Entrez le nouvel ID AMI dans le [`CustomAmi`](Scheduling-v3.md#yaml-Scheduling-SlurmQueues-Image-CustomAmi)champ de configuration de votre cluster et créez un cluster.

------