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

Dernière mise à jour : 17/12/2020

Je souhaite monter un système de fichiers Amazon Elastic File System (Amazon EFS) sur un conteneur Amazon Elastic Container Service (Amazon ECS) ou une tâche exécutée 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 créer une définition de tâche, puis la rendre disponible pour les conteneurs de votre tâche dans toutes les zones de disponibilité de votre région AWS. Ensuite, 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 plate-forme Fargate version 1.4.0 ou ultérieure, qui dispose d'un stockage permanent 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 plate-forme Fargate ne prennent pas en charge le stockage permanent à l'aide d'Amazon EFS.

Avant de suivre les étapes de la section Résolution, vous disposez des éléments suivants :

Résolution

Créer et configurer un système de fichiers Amazon EFS

1.    Créez un système de fichiers Amazon EFS et relevez 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 être dans le même VPC.

2.    Pour autoriser les connexions entrantes sur le port 2049 (système de fichiers réseau ou NFS) à partir du groupe de sécurité associé à votre tâche ou service Fargate, 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 service pour autoriser les connexions sortantes sur le port 2049 au groupe de sécurité de votre système de fichiers Amazon EFS.

Créer une définition de tâche

1.    Ouvrez la console Amazon ECS.

2.    Dans le volet de navigation, sélectionnez Task Definitions (Définitions de tâche), puis Create new Task Definition (Créer une nouvelle définition de tâche).

3.    Dans la section Select launch type compatibility (Sélectionner la compatibilité du type de lancement) , choisissez FARGATE, puis Next Step (Étape suivante).

4.    Dans la section Configure task and container definitions (Configurer les définitions de tâches et de containers), pour Task Definition Name (Nom de la définition de tâche), saisissez un nom pour votre définition de tâche.

5.    Dans la section Volumes , choisissez Add volume (Ajouter un volume).

6.    Pour Name, saisissez un nom pour votre volume.

7.    Pour Volume type (Type de volume), saisissez EFS.

8.    Pour File system ID (ID du système de fichiers), entrez l'ID de votre système de fichiers Amazon EFS.

Remarque : vous pouvez spécifier des options personnalisées pour Root directory (répertoire racine), Encryption in transit (chiffrement en transit) et EFS IAM authorization (autorisation IAM EFS). Ou, vous pouvez accepter la valeur par défaut, où « / » est le répertoire racine.

9.    Sélectionnez Ajouter.

10.    Dans la section Containers Definition (Définition de conteneurs), sélectionnez Add container (Ajouter un container).

11.    Dans la section STORAGE AND LOGGING (stockage et journalisation) , dans la sous-section Mount points (Points de montage), sélectionnez le volume que vous avez créé pour le Source volume à l'étape 5.

12.    Pour Container path, choisissez votre chemin de conteneur.

13.    (Facultatif) Dans la section ENVIRONNEMENT, pour Entry point, saisissez votre point d'entrée.

14.    Dans 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 si votre système de fichiers Amazon EFS est monté correctement. Par défaut, le conteneur se ferme après l'exécution de la commande df -h . L'exemple de définition de tâche JSON à l'étape 16 utilise une boucle while infinie pour maintenir la tâche en cours d'exécution.

15.    Sélectionnez Ajouter.

16.    Remplissez les champs restants de l'assistant de définition de tâche, puis choisissez Create (Créer).

Dans l'exemple suivant, 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 d'accès 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, ContainerPathet d'autres valeurs d'espace réservé par des valeurs pour votre configuration personnalisée. Vérifiez également que votre définition de tâche a un rôle d'exécution Amazon Resource Name (ARN) pour prendre en charge le pilote de journal awslogs .

Exécuter une tâche Fargate et vérifier vos journaux de tâche

1.    Exécutez une tâche Fargate à l'aide de la définition de tâche que vous avez créée précédemment.

Important : assurez-vous d'exécuter votre tâche sur la plate-forme Fargate version 1.4.0.

2.    Pour vérifier que votre système de fichiers Amazon EFS est correctement monté sur votre conteneur Fargate, vérifiez vos journaux de tâche.

Le résultat df-h doit être similaire à ce qui suit :

2020-10-27 15:15:35
Filesystem 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

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


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