In einem Node.js-Projekt versuche ich, Daten von S3 zurückzugewinnen.
Wenn ich benutze getSignedURL
, funktioniert alles:
aws.getSignedUrl('getObject', params, function(err, url){
console.log(url);
});
Meine Parameter sind:
var params = {
Bucket: "test-aws-imagery",
Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
Wenn ich die URL-Ausgabe in die Konsole nehme und in einen Webbrowser einfüge, wird die benötigte Datei heruntergeladen.
Wenn ich jedoch versuche zu verwenden, getObject
bekomme ich alle möglichen merkwürdigen Verhaltensweisen. Ich glaube, ich benutze es nur falsch. Folgendes habe ich versucht:
aws.getObject(params, function(err, data){
console.log(data);
console.log(err);
});
Ausgänge:
{
AcceptRanges: 'bytes',
LastModified: 'Wed, 06 Apr 2016 20:04:02 GMT',
ContentLength: '1602862',
ETag: '9826l1e5725fbd52l88ge3f5v0c123a4"',
ContentType: 'application/octet-stream',
Metadata: {},
Body: <Buffer 01 00 00 00 ... > }
null
Es scheint also, dass dies richtig funktioniert. Wenn ich jedoch einen Haltepunkt auf eines der console.log
s setze , gibt meine IDE (NetBeans) einen Fehler aus und weigert sich, den Wert von Daten anzuzeigen. Obwohl dies nur die IDE sein könnte, habe ich mich entschlossen, andere Verwendungsmöglichkeiten auszuprobieren getObject
.
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
Dies gibt nichts aus. Das Einfügen eines Haltepunkts zeigt, dass der Code niemals eines der console.log
s erreicht. Ich habe auch versucht:
aws.getObject(params).on('success', function(data){
console.log(data);
});
Dies gibt jedoch auch nichts aus und das Platzieren eines Haltepunkts zeigt, dass der console.log
nie erreicht wird.
Was mache ich falsch?
aws
Objekt tatsächlich eine neue Instanz desaws.S3
Objekts? Wird die Antwort auchgetObject()
an eine http-Antwort zurückgegeben oder an eine Datei weitergeleitet?