如何在 Node.js 从 S3 getObject 获得响应?
在 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 输出带到控制台并将其粘贴到 Web 浏览器中,它将下载我需要的文件。
但是,如果我试图使用,我会遇到各种奇怪的行为。我相信我只是错误地使用它。这是我尝试过的: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
因此,这似乎可以正常工作。但是,当我在其中一个 s 上放置断点时,我的 IDE (NetBeans) 会引发错误并拒绝显示数据的值。虽然这可能只是IDE,但我决定尝试其他方法来使用。console.log
getObject
aws.getObject(params).on('httpData', function(chunk){
console.log(chunk);
}).on('httpDone', function(data){
console.log(data);
});
这不会输出任何内容。将断点放入表示代码永远不会到达其中任何一个 s。我还尝试了:console.log
aws.getObject(params).on('success', function(data){
console.log(data);
});
但是,这也不会输出任何内容,并且放置断点表示从未达到。console.log
我做错了什么?