Comment monter un système de fichiers Amazon EFS sur un conteneur Amazon ECS ou sur une tâche exécutée sur Fargate ?

Lecture de 5 minute(s)
0

Je souhaite monter un système de fichiers Amazon Elastic File System (Amazon EFS) sur un conteneur ou une tâche Amazon Elastic Container Service (Amazon ECS). Le conteneur ou la tâche Amazon ECS s’exécute sur AWS Fargate.

Brève description

Pour monter un système de fichiers Amazon EFS sur une tâche ou un conteneur Fargate, vous devez d’abord créer une définition de tâche. Mettez ensuite cette définition de tâche à la disposition des conteneurs de votre tâche dans toutes les zones de disponibilité de votre région AWS. Enfin, vos tâches Fargate utilisent Amazon EFS pour monter automatiquement le système de fichiers sur les tâches que vous spécifiez dans votre définition de tâche.

Important : la résolution suivante s’applique à la version 1.4.0 et ultérieure de la plateforme Fargate. Ces versions disposent d'un stockage persistant que vous pouvez définir au niveau de la tâche et du conteneur dans Amazon ECS. Les versions 1.3.0 ou antérieures de la plateforme Fargate ne prennent pas en charge le stockage persistant utilisant Amazon EFS.

Résolution

Prérequis

Vous devez disposer des éléments suivants :

Création et configuration d’un système de fichiers Amazon EFS

  1. Créez un système de fichiers Amazon EFS, puis notez l’ID EFS et l’ID du groupe de sécurité.
    Remarque : votre système de fichiers Amazon EFS, votre cluster Amazon ECS et vos tâches Fargate doivent tous se trouver dans le même VPC.
  2. Autorisez les connexions entrantes sur le port 2049 (Network File System ou NFS) à partir du groupe de sécurité associé à votre tâche ou service Fargate. Pour autoriser ces connexions, modifiez les règles de groupe de sécurité de votre système de fichiers EFS.
  3. Mettez à jour le groupe de sécurité de votre service Amazon ECS pour autoriser les connexions sortantes sur le port 2049 vers le groupe de sécurité de votre système de fichiers Amazon EFS.

Créez une définition de tâche

  1. Ouvrez la console Amazon ECS.
  2. Dans le volet de navigation, choisissez Définitions de tâches, puis choisissez Créer une nouvelle définition de tâche.
  3. Dans la section Sélectionner la compatibilité du type de lancement, choisissez FARGATE, puis Étape suivante.
  4. Dans la section Configurer les définitions des tâches et des conteneurs, saisissez un nom pour votre définition de tâche dans le champ Nom de définition de tâche.
  5. Dans la section Volumes, choisissez Ajouter un volume. Ensuite, saisissez les informations suivantes :
    Dans le champ Nom, entrez le nom de votre volume.
    Pour Type de volume, entrez EFS.
    Dans le champ ID du système de fichiers, entrez l’ID de votre système de fichiers Amazon EFS.
    Remarque : spécifiez des options personnalisées pour Répertoire racine, Chiffrement en transit et Autorisation EFS AWS Identity and Access Management (IAM). Vous pouvez également accepter la valeur par défaut, où «/» est le répertoire racine.
  6. Choisissez Ajouter.
  7. Dans la section Définition des conteneurs, choisissez Ajouter un conteneur.
  8. Dans la section STOCKAGE ET JOURNALISATION, dans la sous-section Points de montage, sélectionnez le volume que vous avez créé pour le Volume source.
  9. Pour le Chemin d'accès au conteneur, choisissez votre chemin d'accès au conteneur.
  10. (Facultatif) Dans la section ENVIRONNEMENT, pour Point d’entrée, entrez votre point d’entrée.
  11. Dans le champ Command, entrez la commande [df ,-h] pour afficher le système de fichiers monté.
    Remarque : vous pouvez utiliser le point d’entrée et la commande pour vérifier que votre système de fichiers Amazon EFS est correctement monté. Par défaut, le conteneur se ferme une fois la commande df -h exécutée avec succès.
  12. Choisissez Ajouter.
  13. Entrez vos informations pour les champs restants dans l’assistant de définition des tâches, puis choisissez Créer.

Dans l’exemple suivant, la définition de tâche JSON utilise une boucle infinie pour maintenir la tâche en cours d’exécution. La définition de tâche crée un volume de données nommé efs-test. Le conteneur nginx monte le volume de données hôte sur le chemin Any_Container_Path.

{
  "family": "sample-fargate-test",
  "networkMode": "awsvpc",
  "executionRoleArn": "arn:aws:iam::1234567890:role/ecsTaskExecutionRole",
  "containerDefinitions": [
    {
      "name": "fargate-app",
      "image": "nginx",
      "portMappings": [
        {
          "containerPort": 80,
          "hostPort": 80,
          "protocol": "tcp"
        }
      ],
      "essential": true,
      "entryPoint": [
        "sh",
        "-c"
      ],
      "command": [
        "df -h && while true; do echo \"RUNNING\"; done"
      ],
      "mountPoints": [
        {
          "sourceVolume": "efs-test",
          "containerPath": "Any_Container_Path"
        }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "AWS_LOG_GROUP_PATH",
          "awslogs-region": "AWS_REGION",
          "awslogs-stream-prefix": "AWS_STREAM_PREFIX"
        }
      }
    }
  ],
  "volumes": [
    {
      "name": "efs-test",
      "efsVolumeConfiguration": {
        "fileSystemId": "fs-123xx4x5"
      }
    }
  ],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "cpu": "256",
  "memory": "512"
}

Remarque : remplacez fileSystemId, logConfiguration, containerPath et les autres valeurs d’espace réservé par des valeurs correspondant à votre configuration personnalisée. Vérifiez également que votre définition de tâche possède un rôle IAM Amazon Resource Name (ARN) pour prendre en charge le pilote de journal awslogs.

Exécutez une tâche Fargate et consultez vos journaux de tâches

  1. Utilisez votre définition de tâche pour exécuter une tâche Fargate.
    Important : exécutez votre tâche sur la plateforme Fargate version 1.4.0.
  2. Pour vérifier que votre système de fichiers Amazon EFS est correctement monté sur votre conteneur Fargate, consultez vos journaux de tâches.
    La sortie de df-h ressemble à ce qui suit :
    2020-10-27 15:15:35Filesystem 1K-blocks Used Available Use% Mounted on
    
    2020-10-27 15:15:35
    overlay 30832548 9859324 19383976 34% /
    
    2020-10-27 15:15:35
    tmpfs 65536 0 65536 0% /dev
    
    2020-10-27 15:15:35
    shm 2018788 0 2018788 0% /dev/shm
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /sys/fs/cgroup
    
    2020-10-27 15:15:35
    fs-xxxxxxxx.efs.us-east-1.amazonaws.com:/ 9007199254739968 0 9007199254739968 0% /Any_Container_Path
    
    2020-10-27 15:15:35
    /dev/xvdcz 30832548 9859324 19383976 34% /etc/hosts
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /proc/acpi
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /sys/firmware
    
    2020-10-27 15:15:35
    tmpfs 2018788 0 2018788 0% /proc/scsi
    
    RUNNING

Informations connexes

Sécurité dans Amazon EFS

Configuration des systèmes de fichiers Amazon EFS pour Amazon ECS à l’aide de la console

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois