Мне нужно создать Zip файл, который состоит из набора файлов (видео и изображений), расположенных в моем ведре s3.
Проблема в данный момент с использованием моего кода ниже заключается в том, что я быстро попал в ограничение памяти на Lambda.
async.eachLimit(files, 10, function(file, next) {
var params = {
Bucket: bucket, // bucket name
Key: file.key
};
s3.getObject(params, function(err, data) {
if (err) {
console.log('file', file.key);
console.log('get image files err',err, err.stack); // an error occurred
} else {
console.log('file', file.key);
zip.file(file.key, data.Body);
next();
}
});
},
function(err) {
if (err) {
console.log('err', err);
} else {
console.log('zip', zip);
content = zip.generateNodeStream({
type: 'nodebuffer',
streamFiles:true
});
var params = {
Bucket: bucket, // name of dest bucket
Key: 'zipped/images.zip',
Body: content
};
s3.upload(params, function(err, data) {
if (err) {
console.log('upload zip to s3 err',err, err.stack); // an error occurred
} else {
console.log(data); // successful response
}
});
}
});
-
Возможно ли это использовать Lambda, или я должен смотреть на другое подходит?
-
Возможно ли записать в сжатый zip файл "на лету", поэтому устранить проблему с памятью несколько, или мне нужно, чтобы файлы были собраны до сжатия?
Любая помощь будет высоко оценена.