В проекте 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-ответ или он передается в файл?