Я столкнулся с проблемой при подключении тома ECS к EFS через точку доступа EFS.
Роль задачи настраивается с помощью ClientWrite, ClientRead и ClientRootAccess для этой файловой системы.
Точка доступа настроена с использованием идентификатора пользователя posix 1001 и идентификатора группы 1001 с разрешением 755.
Кластер и файловая система находятся в правильном VPC.
Но ECS не удалось развернуть задачу с такой ошибкой:
Ответ от демона об ошибке: не удалось скопировать информацию о файле для / var / lib / ecs / volume / {{имя-задачи}}: не удалось выполнить chown / var / lib / ecs / volume / {{имя-задачи}}
Мне удалось развернуть задачу, если я установил идентификатор пользователя POSIX точки доступа и идентификатор группы равным 0, как в корне. Но я чувствую, что это не лучший выбор по соображениям безопасности в общей FS.
После некоторых общих поисков я сформировал гипотезу, что после монтирования тома пользователь контейнера или его хоста был изменен с root, что мешает любым дальнейшим манипуляциям с файлом / каталогом из Dockerfile. В документах по точкам доступа AWS указано, что:
Когда принудительное использование пользователей включено, Amazon EFS заменяет идентификаторы пользователя и группы клиента NFS на идентификатор, настроенный на точке доступа для всех операций файловой системы.
И потому, что я думаю, что /var/lib/ecs/volumes/...
на самом деле является либо контейнером, либо каталогом хоста.
Как я мог обойти эту проблему?
к сведению: задача запускается в кластере спотовых экземпляров, поэтому ручное монтирование тома в этом случае не является идеальным решением