У проекті Node.js я намагаюся отримати дані назад із S3.
Коли я використовую getSignedURL
, все працює:
aws.getSignedUrl('getObject', params, function(err, url){
console.log(url);
});
Мої параметри:
var params = {
Bucket: "test-aws-imagery",
Key: "TILES/Level4/A3_B3_C2/A5_B67_C59_Tiles.par"
Якщо я виведу вихідний URL на консоль і вставлю його у веб-браузер, він завантажить потрібний мені файл.
Однак, якщо я намагаюся використовувати, getObject
я отримую всілякі дивні поведінки. Я вважаю, що я просто використовую його неправильно. Це те, що я спробував:
aws.getObject(params, function(err, data){
console.log(data);
console.log(err);
});
Виходи:
{
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
Тому виявляється, що це працює належним чином. Однак, коли я встановлюю точку зупинки на одному з console.log
s, мій IDE (NetBeans) видає помилку і відмовляється показувати значення даних. Хоча це може бути просто IDE, я вирішив спробувати інші способи використання getObject
.
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
Це нічого не виводить. Введення точки зупинки показує, що код ніколи не досягає жодного з console.log
s. Я також спробував:
aws.getObject(params).on('success', function(data){
console.log(data);
});
Однак це також нічого не дає, і розміщення точки зупинки показує, що значення console.log
ніколи не досягається.
Що я роблю не так?
aws
об’єкт насправді є новим екземпляромaws.S3
об’єкта? Також відповідьgetObject()
передається назад у відповідь http або передається у файл?