Назад | Перейти на главную страницу

Как смонтировать Amazon EFS в качестве тома данных в задаче ECS?

Данные пользователя в конфигурации запуска:

#!/bin/bash
echo ECS_CLUSTER=prodcluster >> /etc/ecs/ecs.config

sudo yum install -y nfs-utils 
sudo mkdir /home/ec2-user/web_file_uploads 
sudo chmod 777 /home/ec2-user/web_file_uploads 

sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-abcdef.efs.ap-southeast-2.amazonaws.com:/ /home/ec2-user/web_file_uploads 

Определение задачи:

{
  "networkMode": "bridge",
  "containerDefinitions": [
    {
      "portMappings": [
        ...
      ],
      "essential": true,
      "mountPoints": [
        {
          "containerPath": "/src/temp_uploads/",
          "sourceVolume": "web_file_uploads",
          "readOnly": null
        }
      ],
      "name": "webapp",
      "readonlyRootFilesystem": null,
      "image": "911911911.dkr.ecr.ap-southeast-2.amazonaws.com/webapp:release6",
      "memoryReservation": 150
    }
  ],
  "volumes": [
    {
      "host": {
        "sourcePath": "/home/ec2-user/web_file_uploads"
      },
      "name": "web_file_uploads"
    }
  ],
  "family": "webapp-task"
}

Заметка: Я добавил необходимые порты в группу безопасности. Папка src / temp_uploads должна находиться во всех других экземплярах контейнера, запущенных с этим определением задачи.

Проблема: Если я монтирую его вручную, используя sudo mount ... folder1, поместите туда несколько файлов и смонтируйте их в sudo mount ... folder2 папка 2 содержит изменения, которые показывают, что она монтируется правильно.

Проблема в том, что объем, отображаемый в определении задачи, не отображается efs. Вместо этого он помещает / использует контент на самом деле внутри /home/ec2-user/web_file_uploads. Как сделать так, чтобы этот том был сопоставлен efs

Измените конфигурацию обеда на перезапустите службу докеров сразу после монтирования EFS. Тогда только ECS будет использовать смонтированную файловую систему EFS как том. В противном случае он будет использовать исходный каталог (монтирование будет проигнорировано).

#!/bin/bash
echo ECS_CLUSTER=prodcluster >> /etc/ecs/ecs.config
sudo yum install -y nfs-utils

sudo stop ecs
sudo mkdir /home/ec2-user/web_file_uploads
sudo chmod 777 /home/ec2-user/web_file_uploads
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-abcdef.efs.ap-southeast-2.amazonaws.com:/ /home/ec2-user/web_file_uploads
sudo service docker restart
sudo start ecs

Примечание. Служба ECS остановится после перезапуска службы докера, поскольку агент ECS работает внутри докера. После этого вам необходимо запустить службу ECS.