AWS Lambda运行StarDist2D实例时出现只读文件系统错误排查
AWS Lambda中StarDist2D实例化只读文件系统错误解决方案
问题说明
在AWS Lambda容器中运行深度学习推理时,从S3下载模型流程正常,但实例化StarDist2D(conf)对象时触发以下错误:
OSError:[Errno 30]Read-only file system:'2024-04-05-06-15-30.176066'
错误信息中的时间戳文件名是StarDist尝试生成的临时/缓存文件,因Lambda容器的只读文件系统限制导致写入失败。
原因分析
AWS Lambda容器仅允许在/tmp目录执行写入操作,其余目录均为只读状态。StarDist默认会在当前工作目录(Lambda默认路径为/var/task,属于只读目录)生成临时日志、缓存或模型相关文件,因此触发权限错误。
解决方案
方案1:修改StarDist Config2D配置,指定可写目录
在实例化Config2D时,添加basedir参数,将其指向/tmp下的自定义目录,让StarDist将所有需要写入的文件放在该路径:
conf = Config2D ( n_rays = n_rays, grid = grid, use_gpu = use_gpu, n_channel_in = n_channel, train_patch_size = (768,768), basedir='/tmp/stardist_cache' # 指定可写的缓存目录 )
方案2:全局设置Python临时目录环境变量
在Lambda函数开头设置TMPDIR环境变量,让所有依赖库(包括StarDist)默认使用/tmp作为临时文件目录:
import os os.environ['TMPDIR'] = '/tmp'
额外代码优化提示
你的代码中重复定义了download_model_from_s3函数,建议删除重复定义,避免潜在的逻辑冲突。
内容的提问来源于stack exchange,提问作者Vinayak Bakshi
相关产品推荐
相关产品推荐

