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

求助:ECS Fargate运行Docker任务时出现无可用临时目录错误

ECS Fargate中Python临时目录不可用错误原因分析

核心原因

  1. Fargate只读根文件系统限制
    ECS Fargate默认采用只读根文件系统(仅/tmp目录是挂载的可写临时卷)。你自定义的/documents_api_tmp目录位于只读根文件系统上,尽管构建阶段设置了全权限,但运行时Fargate不允许对根文件系统进行写入操作,导致runner用户无法在该目录创建临时文件。

  2. 自定义TMPDIR未指向可写挂载点
    你通过ENV TMPDIR=/documents_api_tmp指定了临时目录,但该目录不在Fargate默认的可写挂载范围内。本地Docker运行时根文件系统默认可写,所以该配置能正常工作;但Fargate环境下这个目录是只读的,Python遍历临时目录列表时找不到可写路径,抛出FileNotFoundError。

  3. 构建阶段权限设置不生效
    构建时你给/documents_api_tmp设置了777权限和粘滞位,但这些操作仅在构建镜像的文件系统中有效。Fargate运行时会替换根文件系统为只读模式,之前的权限设置无法覆盖运行时的文件系统属性。

修复建议

  • 改用Fargate默认的可写/tmp目录
    删除Dockerfile中自定义临时目录的相关代码,直接使用Fargate自动挂载的/tmp卷:

    # 移除以下代码
    # RUN mkdir -p /documents_api_tmp && chmod 777 -R /documents_api_tmp && chmod o+t -R /documents_api_tmp
    # ENV TMPDIR=/documents_api_tmp
    

    若需显式指定TMPDIR,直接指向/tmp:

    ENV TMPDIR=/tmp
    
  • 确保runner用户对/tmp有写入权限
    可在构建阶段添加权限确认(可选,Fargate默认/tmp权限为777):

    RUN chmod 777 /tmp
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 19:28:18