7
我需要創建一個Zip文件,該文件包含位於我的s3存儲桶中的一系列文件(視頻和圖像)。使用Lambda節點從S3上的文件創建S3上的zip文件
目前使用我的代碼下面的問題是,我很快就達到了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文件,從而在某種程度上消除內存問題,還是需要在壓縮之前收集文件?
任何幫助將不勝感激。
我可以看到的唯一問題是,lambda在tmp目錄中被限制爲500MB存儲空間。在這種情況下,它也會限制最終的郵編大小。 – Rabona
不知道您是否在運行.zip過程中的任何文件處理,但是使用該數據量時,您希望確保您的功能可以在5分鐘的執行時間範圍內完成。我的最大數據量通常爲每次執行20-25毫克左右。 –
@Rabona你是否設法通過lambda解決這個問題?我有同樣的問題。我們需要用大約100Mb的圖像壓縮1.5GB的視頻文件。我們耗盡內存。我們還嘗試了使用相同圖像的較小視頻文件(〜1GB)並獲取超時。希望你可能已經發現了一些有用的東西,可以幫助我們。 – Forer