I have download a zip file from s3 bucket then extracting the zip file and finally upload one file to s3 bucket in Lambda function using Node JS.But am getting the error
我从s3存储桶下载了一个zip文件,然后解压缩了zip文件,最后使用Node JS将一个文件上传到Lambda函数中的s3存储桶。但是我收到了错误
==> Error: EROFS: read-only file system, open './tmp/test.zip' "Process exited before completing> request"
==>错误:EROFS:只读文件系统,打开'./tmp/test.zip'“在完成>请求之前退出流程”
exports.handler = function (callback) {
downloadZipFile(params, downloadPath, function (err) {
if (err) {
callback(err);
} else {
processZipFile(downloadPath, function (err) {
if (err) {
callback(err);
} else {
callback(null);
}
});
}
});
};
function downloadZipFile(params, downloadPath, callback) {
const file = fs.createWriteStream(downloadPath);
s3.getObject(params)
.on('httpData', function (chunk) {
file.write(chunk);
})
.on('success', function () {
callback(null);
})
.on('error', function (err) {
callback(err);
})
.on('complete', function () {
file.end();
})
.send();
}
function processZipFile(filePath) {
const stats = fs.statSync(filePath)
const fileSizeInBytes = stats.size
if (fileSizeInBytes > 0) {
var srcPath = filePath;
var destPath = "./tmp";
targz.decompress({
src: srcPath,
dest: destPath
}, function (err) {
if (err) {
console.log(err);
} else {
console.log("Done!");
UploadFile();
}
});
}
}
function UploadFile() {
var body = fs.createReadStream('./tmp/SampleFile.txt')
var srcfileKey = "SampleFile.txt";
// Upload the stream
var s3obj = new AWS.S3({ params: { Bucket: bucketName, Key: srcfileKey } });
s3obj.upload({ Body: body }, function (err, data) {
if (err) {
console.log("An error occurred", err);
}
console.log("Uploaded the file at", data.Location);
})
}
1 个解决方案
#1
17
You need to change the file path to just /tmp
instead of ./tmp
. Lambda only allows you to write to the /tmp
directory.
您需要将文件路径更改为/ tmp而不是./tmp。 Lambda只允许您写入/ tmp目录。
#1
17
You need to change the file path to just /tmp
instead of ./tmp
. Lambda only allows you to write to the /tmp
directory.
您需要将文件路径更改为/ tmp而不是./tmp。 Lambda只允许您写入/ tmp目录。