【发布时间】:2021-01-11 10:52:50
【问题描述】:
我在尝试通过 EFS 访问点将 ECS 卷挂载到 EFS 时遇到问题。
任务角色设置为对该文件系统的 ClientWrite、ClientRead 和 ClientRootAccess。
使用 posix userid 1001 和 groupid 1001 设置接入点,权限为 755。
集群和文件系统位于正确的 VPC 中。
但 ECS 未能启动任务并出现此错误:
来自守护程序的错误响应:无法复制文件信息 /var/lib/ecs/volumes/{{task-name}}:chown 失败 /var/lib/ecs/volumes/{{任务名称}}
如果我在 root 中将接入点的 POSIX 用户 ID 和 groupid 设置为 0,我就能够启动任务。但我觉得它不是共享 FS 中出于安全原因的最佳选择。
经过一些常规搜索后,我假设在挂载卷后,容器或其主机的用户已从 root 更改,这与 Dockerfile 中任何进一步的文件/目录操作相混淆。 AWS 接入点文档指出:
启用用户强制后,Amazon EFS 将替换 NFS 客户端的 具有在接入点上配置的身份的用户和组 ID 用于所有文件系统操作。
因为我认为/var/lib/ecs/volumes/... 实际上要么是容器目录,要么是主机目录。
我该如何规避这个问题?
仅供参考:该任务在 Spot 实例集群中运行,因此在这种情况下手动挂载卷不是理想的解决方案
【问题讨论】:
-
嗨。我遇到了同样的问题。我通过删除 Dockerfile 中的现有文件夹解决了这个问题。似乎当图像中存在文件夹时,docker(或 ECS ?)想要 chown/chmod/copy 到目标中......
标签: amazon-web-services docker devops amazon-ecs amazon-efs