Данные пользователя в конфигурации запуска:
#!/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.