Dalam proyek Node.js saya mencoba mendapatkan kembali data dari S3.
Saat saya menggunakan getSignedURL
, semuanya bekerja:
aws.getSignedUrl('getObject', params, function(err, url){
console.log(url);
});
Parameter saya adalah:
var params = {
Bucket: "test-aws-imagery",
Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
Jika saya mengambil output URL ke konsol dan menempelkannya di browser web, itu mengunduh file yang saya butuhkan.
Namun, jika saya mencoba menggunakan getObject
saya mendapatkan segala macam perilaku aneh. Saya yakin saya hanya menggunakannya secara tidak benar. Inilah yang saya coba:
aws.getObject(params, function(err, data){
console.log(data);
console.log(err);
});
Keluaran:
{
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
Jadi tampaknya ini berfungsi dengan baik. Namun, ketika saya meletakkan breakpoint pada salah satu console.log
s, IDE saya (NetBeans) membuat kesalahan dan menolak untuk menunjukkan nilai data. Meskipun ini mungkin saja IDE, saya memutuskan untuk mencoba cara lain untuk menggunakannya getObject
.
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
Ini tidak menghasilkan apa pun. Menempatkan breakpoint di menunjukkan bahwa kode tidak pernah mencapai salah satu dari console.log
s. Saya juga mencoba:
aws.getObject(params).on('success', function(data){
console.log(data);
});
Namun, ini juga tidak menampilkan apa pun dan menempatkan breakpoint menunjukkan bahwa console.log
tidak pernah tercapai.
Apa yang saya lakukan salah?
aws
objek Anda sebenarnya adalah objek baruaws.S3
? Selain itu, apakah tanggapangetObject()
akan dikirimkan kembali ke tanggapan http atau sedang disalurkan ke file?