So kopieren / verschieben Sie alle Objekte in Amazon S3 mithilfe des AWS-SDK für Node.js von einem Präfix zu einem anderen
Wie kopiere ich alle Objekte von einem Präfix zu anderen? Ich habe versucht, alle möglichen Wege, um alle Objekte kopieren in einem Schuss von einem Präfix zu anderen, aber der einzige Weg, scheint zu funktionieren, indem die Schleife über eine Liste von Objekten und kopieren Sie Sie eins nach dem anderen. Das ist wirklich ineffizient. Wenn ich Hunderte von Dateien in einem Ordner, muss ich zu 100 Anrufe?
var params = {
Bucket: bucket,
CopySource: bucket+'/'+oldDirName+'/filename.txt',
Key: newDirName+'/filename.txt',
};
s3.copyObject(params, function(err, data) {
if (err) {
callback.apply(this, [{
type: "error",
message: "Error while renaming Directory",
data: err
}]);
} else {
callback.apply(this, [{
type: "success",
message: "Directory renamed successfully",
data: data
}]);
}
});
InformationsquelleAutor der Frage Yousaf | 2015-06-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Werden Sie brauchen, um eine
AWS.S3.listObjects()
um eine Liste Ihrer Objekte mit einem bestimmten Präfix. Aber Sie sind richtig, dass Sie benötigen, zu machen, rufen Sie für jedes Objekt, das Sie kopieren möchten, aus einem Eimer/Präfix, um den gleichen oder einen anderen Eimer/Präfix.Können Sie auch mit einem utility library wie async zur Verwaltung Ihrer Anfragen.
Hoffe, das hilft!
InformationsquelleAutor der Antwort Aditya Manohar
Eine kleine änderung am code von Aditya Manohar, verbessert die Fehlerbehandlung in den s3.copyObject-Funktion und wird tatsächlich beenden Sie die "bewegen" - Anfrage, indem Sie die Quelle der Dateien nach dem kopieren Anfragen wurden ausgeführt:
Beachten Sie, dass habe ich verschoben in die
cb()
callback-Funktion außerhalb der if-then-else-Schleife. So auch, wenn ein Fehler Auftritt, wird die async-Modul ausgelöst wird, diedone()
Funktion.InformationsquelleAutor der Antwort Guppie70