Python AWS Lambda将列表写入txt文件时报只读文件系统错误
报错原因
AWS Lambda运行环境的文件系统默认是只读挂载的,仅/tmp目录开放写入权限。你在代码中直接使用相对路径创建upload.txt,实际是在只读的工作目录下操作,和你是新建文件还是修改已有文件没有关系,只要写入路径不在/tmp下就会触发这个只读报错。
另外你原有代码还有一个隐藏问题:写完内容后文件指针停在文件末尾,直接把文件对象传给requests上传的话,会读到空内容,需要手动把指针移回文件开头。
修正后的实现代码
import requests my_list = ['hello', 'world', 'good', 'morning'] # 写入路径必须指定为/tmp目录下 upload_file_path = "/tmp/upload.txt" with open(upload_file_path, "w+") as a_file: # 逐行写入列表元素 for item in my_list: a_file.write(f"{item}\n") # 将文件指针重置到开头,避免上传空文件 a_file.seek(0) file_dict = {"upload.txt": a_file} # 执行上传请求 response = requests.post(url, files=file_dict)
额外注意事项
- Lambda默认给
/tmp目录分配的存储空间是512MB,可根据需求在函数配置中最高调整到10GB - Lambda的执行实例可能会被后续请求复用,
/tmp目录下的残留文件会被保留,不需要的临时文件建议用完主动删除,避免出现脏数据或空间不足问题
内容的提问来源于stack exchange,提问作者baddy
相关产品推荐
相关产品推荐

