You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ECS/Fargate临时存储挂载权限问题:非特权用户无法写入

ECS/Fargate临时存储挂载目录属主为root导致非特权用户无法写入

我之前在ECS/EC2上运行服务一切正常,但迁移到ECS/Fargate后,临时存储的挂载目录属主变成了root:root,导致以非特权用户myuser:mygroup运行的应用无法写入该目录。但奇怪的是,EFS挂载的目录属主符合预期,没有问题。


使用Terraform创建的服务配置

resource "aws_ecs_task_definition" "mytask" {
  family = "mytask"
  container_definitions = templatefile("${path.module}/task-definitions/mytaskdef.json", {
    [...]
  }
  volume {
    name = "media"
    efs_volume_configuration {
      file_system_id = aws_efs_file_system.myefs.id
    }
  }
  volume {
    name = "static"
  }
  [...]
}

resource "aws_ecs_service" "myservice" {
  name = "myservice"
  cluster = aws_ecs_cluster.mycluster.id
  task_definition = aws_ecs_task_definition.mytask.arn
  [...]
}

容器定义JSON

[
  {
    "name": "mycontainer",
    "essential": true,
    "image": "myimage",
    "user": "myuser:mygroup",
    "privileged": null,
    "mountPoints": [
      {
        "sourceVolume": "media",
        "containerPath": "/var/www/myefsmount",
        "readOnly": false
      },
      {
        "sourceVolume": "static",
        "containerPath": "/var/www/mymountpoint",
        "readOnly": false
      }
    ],
    [...]
  }
]

Fargate环境下的命令输出

root@ip-10-0-0-241:/app# mount | grep mymountpoint
/dev/nvme1n1 on /var/www/mymountpoint type ext4 (rw,relatime)
root@ip-10-0-0-241:/app# ls -ld /var/www/mymountpoint
drwxr-xr-x 2 root root 4096 Jul  7 16:42 /var/www/mymountpoint
root@ip-10-0-0-241:/app#

ECS/EC2环境下的命令输出(同一份基础设施代码)

myuser@8db224841833:/app$ mount | grep mymountpoint
/dev/nvme0n1p1 on /var/www/mymountpoint type xfs (rw,noatime,attr2,inode64,noquota)
myuser@8db224841833:/app$ ls -ld /var/www/mymountpoint
drwxrwsr-x 14 myuser mygroup 210 Jul  7 13:27 /var/www/mymountpoint
myuser@8db224841833:/app$

EFS挂载目录的命令输出(符合预期)

root@ip-10-0-0-241:/app# mount | grep torchweb_media
fs-longfsid.efs.eu-west-2.amazonaws.com:/myefsmount on /var/www/myefsmount type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,noresvport,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=10.0.0.241,local_lock=none,addr=10.0.8.149)
root@ip-10-0-0-241:/app# ls -ld /var/www/myefsmount
drwxrwsr-x 2 myuser mygroup 6144 Jun 22 08:41 /var/www/myefsmount
root@ip-10-0-0-241:/app#

疑问

  • AWS官方文档中,关于任务定义和卷的内容没有明确说明:当不使用EFS、Docker或FSx挂载时,默认会使用临时存储,也没有说明如何指定临时挂载目录的属主为特定用户。
  • 完全相同的镜像和基础设施代码,在ECS/EC2上正常,但Fargate出现问题,唯一区别是底层架构,不清楚是否遗漏了配置项。

内容的提问来源于stack exchange,提问作者Fransurbo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 18:30:20