Passer au contenu

Comment augmenter l'espace disque de mon conteneur Amazon ECS sur AWS Fargate ?

Lecture de 5 minute(s)
0

Je souhaite augmenter l'espace disque pour mon conteneur Amazon Elastic Container Service (Amazon ECS) sur AWS Fargate.

Brève description

Par défaut, les tâches Fargate lancées avec la version 1.40 de la plateforme incluent une taille de stockage des tâches de 20 GiB en tant que volume éphémère unique. Si vous avez besoin de plus de 20 Go de stockage, utilisez l'une des options suivantes pour configurer plus de stockage :

Important : Lorsque vous créez un volume Amazon EFS, utilisez le même Amazon Virtual Private Cloud (Amazon VPC) et les mêmes sous-réseaux que ceux attribués à votre service Fargate.

Résolution

Remarque : Si des erreurs surviennent lorsque vous exécutez des commandes de l’interface de la ligne de commande AWS (AWS CLI), consultez la page Résoudre les erreurs liées à AWS CLI. Vérifiez également que vous utilisez bien la version la plus récente de l'AWS CLI.

Pour augmenter l'espace disque d'un conteneur Amazon ECS sur Fargate, effectuez les tâches en fonction de votre cas d'utilisation.

Configurer le stockage éphémère

Procédez comme suit :

  1. Créez ou mettez à jour la définition de tâche pour configurer le stockage éphémère de la tâche. Exemple :

    "containerDefinitions": [ {
       "memory": 128,
         "essential": true,  
          "name": "nginx",
          "image": "nginx"
       }
    ]
    "ephemeralStorage": {
        "sizeInGiB": 30
        }
  2. Utilisez la définition de tâche mise à jour pour exécuter la tâche.
    Remarque : Pour les tâches associées à un service, sélectionnez une nouvelle révision de définition de tâche pour mettre à jour le service.

Pour plus d'informations, consultez la section Utiliser les montages bind avec Amazon ECS.

Configurer le stockage avec les volumes Amazon EFS

Procédez comme suit :

  1. Créez un groupe de sécurité pour vos cibles de montage Amazon EFS. Puis, ajoutez une règle entrante pour accepter le trafic NFS sur le port 2049 en provenance du groupe de sécurité des tâches de la source.
  2. Créez un système de fichiers Amazon EFS, puis associez le groupe de sécurité à vos cibles de montage.
    Remarque : Par défaut, une cible de montage est configurée dans chaque zone de disponibilité d'une région AWS donnée. Sélectionnez toutes les zones de disponibilité dans lesquelles se trouvent les sous-réseaux VPC du service Fargate.
  3. Notez l'ID du système de fichiers de votre système de fichiers. Par exemple : fs-12345678
  4. Créez ou mettez à jour une définition de tâche afin de configurer un volume pour la tâche Amazon ECS qui comprend votre système de fichiers Amazon EFS. Exemple :
    "volumes": [    {
          "name": "efs-test-volume",
          "efsVolumeConfiguration": {
               "fileSystemId": "fs-12345678",
               "transitEncryption": "ENABLED"
          }
       }
     ]
    Remarque : Remplacez fs-12345678 par l'ID de votre système de fichiers.
  5. Utilisez une section de définitions de conteneur pour créer un point de montage pour le volume à l'intérieur de votre conteneur. Exemple :
    "containerDefinitions": [ {
       "memory": 128,
        "portMappings": [
           {
              "hostPort": 80,
              "containerPort": 80,
               "protocol": "tcp"
            }
         ],
         "essential": true,
         "mountPoints": [
            {
            "containerPath": "/mount/path/inside/container",
            "sourceVolume": "efs-test-volume"
            }
          ],
          "name": "nginx",
          "image": "nginx"
       }
    ]
    Remarque : Le containerPath est le chemin à l'intérieur du conteneur sur lequel vous montez le volume. Le sourceVolume est le nom de votre volume.
  6. Utilisez votre définition de tâche mise à jour pour exécuter la tâche.
    Remarque : Pour les tâches associées à un service, sélectionnez une nouvelle révision de définition de tâche pour mettre à jour le service.

Associer un volume EBS à Fargate

Procédez comme suit :

  1. Créez ou mettez à jour la définition de tâche pour configurer le volume EBS à configurer au lancement. Utilisez l'option "configuredAtLaunch" définie sur true. Exemple :

    "containerDefinitions": [
            {
                "name": "nginx",
                "image": "public.ecr.aws/nginx/nginx:latest",
                "networkMode": "awsvpc",
                "portMappings": [
                    {
                        "name": "nginx-80-tcp",
                        "containerPort": 80,
                        "hostPort": 80,
                        "protocol": "tcp",
                        "appProtocol": "http"
                    }
                ],
                "mountPoints": [
                    {
                        "sourceVolume": "myEBSVolume",
                        "containerPath": "/mount/ebs",
                        "readOnly": true
                        }
                    ]
                }
            ],
            "volumes": [
            {
                "name": "myEBSVolume",
                "configuredAtLaunch": true
            }
        ]
  2. Lancez une tâche autonome. Vous pouvez également lancer une tâche dans le cadre d'un service avec une configuration de volume dans le cadre du fichier JSON.
    Exemple de fichier JSON de tâches autonomes :

    {
      "cluster": "mycluster",
      "taskDefinition": "mytaskdef",
      "volumeConfigurations": [
        {
          "name": "datadir",
          "managedEBSVolume": {
            "volumeType": "gp3",
            "sizeInGiB": 100,
            "roleArn": "arn:aws:iam:1111222333:role/ecsInfrastructureRole",
            "encrypted": true,
            "kmsKeyId": "arn:aws:kms:region:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab"
          }
        }
      ]
    }

    Remarque : Comme indiqué dans l'exemple précédent, aucun instantané n'est nécessaire pour lancer la tâche.
    Exemple de fichier JSON :

    {
        "cluster": "mycluster",
        "taskDefinition": "mytaskdef",
        "serviceName": "mysvc",
        "desiredCount": 2,
        "volumeConfigurations": [
            {
                "name": "myEbsVolume",
                "managedEBSVolume": {
                "roleArn":"arn:aws:iam:1111222333:role/ecsInfrastructureRole",
                "snapshotId": "snap-12345"
                }
            }
        ]
    }

    Remarque : Remplacez roleArn par votre compte ecsInfrastructureRole. Remplacez snapshotId par l'ID d’instantané à partir duquel vous souhaitez créer un volume.

AWS OFFICIELA mis à jour il y a 2 ans