Ich brauche eine Zip-Datei zu erstellen, die aus einer Auswahl besteht aus Dateien (Videos und Bildern), die in meinem s3 Eimer.eine Zip-Datei auf S3 von Dateien auf S3 mit Lambda Knoten
Das Problem im Moment unter meinem Code ist, dass ich schnell das Speicherlimit auf Lambda getroffen.
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
}
});
}
});
Ist dies möglich, Lambda, oder sollte ich an einem anderen Ansatz aussehen?
Ist es möglich, in eine komprimierte ZIP-Datei im laufenden Betrieb zu schreiben, wodurch das Speicherproblem etwas beseitigt wird, oder müssen die Dateien vor der Komprimierung gesammelt werden?
Jede Hilfe wäre sehr willkommen.
Das einzige Problem, das ich mit diesem sehen kann, ist, dass Lambda zu 500MB Speicher im tmp-Verzeichnis beschränkt ist. In diesem Fall würde es auch die endgültige Zip-Größe begrenzen. – Rabona
Nicht sicher, ob Sie eine Dateiverarbeitung neben dem ZIP-Prozess ausführen, aber mit dieser Datenmenge möchten Sie sicherstellen, dass Ihre Funktion innerhalb des Ausführungszeitraums von 5 Minuten abgeschlossen werden kann. Meine größte Datengröße liegt typischerweise bei 20-25 mg pro Ausführung. –
@Rabona haben Sie es geschafft, dieses Problem über Lambda zu lösen? Ich habe das gleiche Problem. Wir müssen eine 1,5-GB-Videodatei mit etwa 100 MB Bildern zippen. Wir haben keine Speicher mehr. Wir haben auch mit einer kleineren Videodatei (~ 1GB) mit den gleichen Bildern versucht und Timeouts bekommen. In der Hoffnung, dass Sie etwas Nützliches entdeckt haben, das uns auch helfen könnte. – Forer