AWS Lambda(Node.js)将S3文件写入本地文件系统的方法咨询
关于AWS Lambda写入S3文件的实现说明
你完全可以直接使用fs.writeFileSync完成文件写入操作,不需要使用所谓的context相关方法,该类方法早已被废弃,标准fs模块操作是官方当前推荐的实现方式。
核心注意事项
- 路径限制:Lambda运行环境只有
/tmp目录具备可写权限,你调用fs.writeFileSync时必须指定写入路径为/tmp下的子路径,写入其他目录会触发权限不足的报错。 - 存储限制:
/tmp目录默认存储上限为512MB,你可以在Lambda函数配置的「临时存储」项中调整上限,最高支持到10GB。 - 数据生命周期:
/tmp目录的数据仅在当前Lambda实例存活期间保留,实例销毁(包括冷启动、函数长时间未调用被回收)时数据会被清空,不要将其作为持久化存储方案,需要长期保留的文件处理完成后建议回存到S3等持久化存储服务。
示例代码
const fs = require('node:fs'); const { S3Client, GetObjectCommand } = require('@aws-sdk/client-s3'); const s3Client = new S3Client({ region: '你的AWS区域' }); exports.handler = async (event) => { // 从S3拉取目标文件 const s3Response = await s3Client.send(new GetObjectCommand({ Bucket: '你的S3存储桶名称', Key: '目标文件在S3中的Key' })); // 将返回的流式数据转换为Buffer const fileContent = Buffer.from(await s3Response.Body.transformToByteArray()); // 直接写入/tmp目录 fs.writeFileSync('/tmp/target-file-name', fileContent); // 后续可直接通过fs.readFileSync('/tmp/target-file-name')读取文件使用 return { statusCode: 200, body: '文件写入完成' }; };
内容的提问来源于stack exchange,提问作者David Faizulaev
相关产品推荐
相关产品推荐

