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

如何将AWS Lambda的/tmp目录切换至EFS存储(Docker镜像场景)

解决Lambda /tmp空间不足:替换为EFS目录(Docker部署场景)

一、确认EFS挂载基础配置

  • 确保EFS已关联Lambda所在VPC,且Lambda执行角色拥有elasticfilesystem:ClientMount、elasticfilesystem:ClientWrite权限
  • 记下Lambda控制台中配置的EFS容器内挂载路径(比如/mnt/efs)

二、修改Docker镜像,替换/tmp指向EFS

因为是Docker镜像部署,要调整启动逻辑,把系统/tmp替换为EFS下的专属目录:

  1. 调整Lambda入口脚本(比如entrypoint.sh):

    • 先在EFS挂载目录下创建实例专属临时目录(用hostname区分实例,避免并发冲突):
      mkdir -p /mnt/efs/lambda_tmp/$(hostname)
      
    • 替换系统/tmp为该目录的软链接(适合直接写死/tmp路径的代码):
      rm -rf /tmp
      ln -s /mnt/efs/lambda_tmp/$(hostname) /tmp
      
    • 或者通过环境变量指定临时目录(适合读取TMPDIR等变量的程序):
      export TMPDIR="/mnt/efs/lambda_tmp/$(hostname)"
      export TMP="/mnt/efs/lambda_tmp/$(hostname)"
      export TEMP="/mnt/efs/lambda_tmp/$(hostname)"
      
  2. 补充镜像依赖(如果基础镜像缺必要工具):
    在Dockerfile中添加安装命令,根据基础镜像选择:

    # 对于CentOS/RHEL系
    RUN yum install -y coreutils && yum clean all
    # 对于Ubuntu/Debian系
    RUN apt-get update && apt-get install -y coreutils && apt-get clean
    

三、更新Lambda的EFS挂载配置(按需调整)

  • 进入Lambda控制台的配置 -> 文件系统
  • 确认EFS访问点路径正确,容器内挂载路径(如/mnt/efs)具备可写权限
  • 高并发编译场景下,建议将EFS切换为最大IO性能模式

四、测试验证

  • 重新构建镜像并推送到ECR,更新Lambda函数的镜像版本
  • 发送并发请求测试,检查EFS目录下的临时文件生成情况,确认日志中不再出现"No space left on device"错误
  • 可在代码中添加日志输出df -h /tmp,验证/tmp已指向EFS

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:50:27