Comment puis-je augmenter la taille des volumes Amazon EBS dans AWS Batch à l'aide d'un modèle de lancement ?

Date de la dernière mise à jour : 19/08/2020

Je souhaite augmenter la taille des volumes Amazon Elastic Block Store (Amazon EBS) dans AWS Batch à l'aide d'un modèle de lancement.

Brève description

Pour augmenter la taille des volumes Amazon EBS dans AWS Batch, vous devez créer un modèle de lancement avant de l'associer à votre environnement de calcul.

Vous pouvez créer un modèle de lancement avec la console Amazon Elastic Compute Cloud (Amazon EC2) ou l'interface de ligne de commande AWS (AWS CLI). La résolution suivante vous montre comment créer un modèle de lancement avec l'interface de ligne de commande AWS.

Remarque : le DeviceName sur le modèle de lancement peut varier en fonction de la version d'Amazon Machine Image (AMI) optimisée pour Amazon Elastic Container Service (Amazon ECS) que vous utilisez. Par défaut, AWS Batch est basé sur Amazon Linux 1 qui est fourni avec deux volumes Amazon EBS (/dev/xvda et /dev/xvdcz). Si vous utilisez Amazon Linux 2, AWS Batch n'a qu'un seul volume (/dev/xvda). Pour plus d'informations, consultez la section Configuration du stockage AMI.

Important : pour augmenter votre limite de stockage au-delà de la limite de stockage Docker (10 Gio par conteneur) pour Amazon Linux 1, consultez la section Comment résoudre l'erreur « Aucun espace restant sur l'appareil » dans AWS Batch ?

Résolution

Créer un modèle de lancement

1.    Créez un fichier nommé launch-template-data.json pour redimensionner les volumes pour votre environnement de calcul. Reportez-vous aux exemples suivants.

Exemple de modèle pour augmenter les volumes pour Amazon Linux 1 (/dev/xvda) et (/dev/xvdcz) :

{
    "LaunchTemplateName":"increase-all-volume",
    "LaunchTemplateData": {
        "BlockDeviceMappings": [
          {
            "Ebs": {
              "DeleteOnTermination": true,
              "VolumeSize": 50,
              "VolumeType": "gp2"
            },
            "DeviceName": "/dev/xvda"
          },
          {
            "Ebs": {
              "DeleteOnTermination": true,
              "VolumeSize": 75,
              "VolumeType": "gp2"
            },
            "DeviceName": "/dev/xvdcz"
          }          
        ]
  }
}

Exemple de modèle pour augmenter le volume pour Amazon Linux 2 (/dev/xvda) :

{
    "LaunchTemplateName": "increase-volume",
    "LaunchTemplateData": {
        "BlockDeviceMappings": [
            {
                "DeviceName": "/dev/xvda",
                "Ebs": {
                    "VolumeSize": 100,
                    "VolumeType": "gp2"
                }
            }
        ]
    }
}

2.    Pour créer un modèle de lancement, exécutez la commande suivante :

aws ec2 --region us-east-1 create-launch-template --cli-input-json file://launch-template-data.json

Remarque : remplacez us-east-1 par votre région AWS.

Le résultat ressemble à ce qui suit :

{
    "LaunchTemplate": {
        "LaunchTemplateId": "lt-06935eb650e40f886",
        "LaunchTemplateName": "increase-volume",
        "CreateTime": "2019-12-26T09:40:46.000Z",
        "CreatedBy": "arn:aws:iam::12345678999:user/alice",
        "DefaultVersionNumber": 1,
        "LatestVersionNumber": 1
    }
}

Créer un environnement de calcul à associer à votre nouveau modèle de lancement

1.    Ouvrez la console AWS Batch.

2.    Dans le volet de navigation, sélectionnez « Compute environments » (Environnements de calculs).

3.    Choisissez « Create environment » (Créer un environnement).

4.    Dans la section « Configure your Compute resources » (Configurer vos ressources de calcul), pour « Launch Template », (Modèle de lancement), sélectionnez le modèle de lancement que vous avez créé précédemment.

5.    Sélectionnez « Create » (Créer).

Remarque : les instances affichent les nouvelles tailles de disque lorsqu'AWS Batch les lance.

6.    Pour tester si les volumes sont redimensionnés, utilisez SSH pour vous connecter à l'instance lancée par AWS Batch, puis exécutez la commande suivante :

$ lsblk

Le résultat ressemble à l'exemple suivant :

NAME                                                                          MAJ:MIN   RM  SIZE RO TYPE MOUNTPOINT
xvda                                                                          202:0      0   50G  0 disk 
`-xvda1                                                                       202:1      0   50G  0 part /
xvdcz                                                                         202:26368  0   75G  0 disk 
`-xvdcz1                                                                      202:26369  0   75G  0 part 
  |-docker-docker--pool_tdata                                                 253:1      0 74.1G  0 lvm  
  | `-docker-docker--pool                                                     253:2      0 74.1G  0 lvm  
  |   `-docker-202:1-394378-b6aedb5f6f6fd8af3731edb7043bafa704d9ff9752495f8eb24e613ec5dd85fd
                                                                              253:3      0   10G  0 dm   /var/lib/docker/devicemapper/mnt/b6aedb5f6f6fd8a
  `-docker-docker--pool_tmeta                                                 253:0      0   80M  0 lvm  
    `-docker-docker--pool                                                     253:2      0 74.1G  0 lvm  
      `-docker-202:1-394378-b6aedb5f6f6fd8af3731edb7043bafa704d9ff9752495f8eb24e613ec5dd85fd
                                                                              253:3      0   10G  0 dm   /var/lib/docker/devicemapper/mnt/b6aedb5f6f6fd8a

La sortie indique que /dev/xvda est de 50G et que /dev/xvdcz est de 75G.


Cet article vous a-t-il été utile ?


Besoin d'aide pour une question technique ou de facturation ?