7
私のs3バケットにあるファイル(ビデオとイメージ)の選択で構成されるZipファイルを作成する必要があります。ラムダノードを使用してS3のファイルからS3上にzipファイルを作成
以下のコードを使用しているときの問題は、すぐにラムダのメモリ制限に達したことです。
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
}
});
}
});
- は、ラムダを使用して、このことが可能であり、または私は別の のアプローチを見て必要がありますか?
圧縮ZIPファイルに書き込むことは可能ですか?メモリの問題を多少排除するか、圧縮前にファイルを収集する必要がありますか?
ご協力いただければ幸いです。
私が見ることができる唯一の問題は、lambdaがtmpディレクトリの500mbの記憶域に制限されていることです。この場合、最終的なジップサイズも制限されます。 – Rabona
.zipプロセスの横にあるファイル処理を実行しているにもかかわらず、その量のデータがある場合は、5分の実行時間枠内で関数が完了できることを確認してください。私の最大のデータサイズは通常、1回の実行につき約20〜25mgです。 –
@Rabonaラムダ経由でこの問題を解決できましたか?私は同じ問題を抱えている。約100MBの画像を含む1.5GBのビデオファイルを圧縮する必要があります。私たちは記憶がなくなります。我々はまた、同じ画像でより小さなビデオファイル(〜1GB)を試し、タイムアウトを得る。あなたが私たちを助けることができる有用なものを発見したかもしれないと願っています。 – Forer