从S3存储桶中抓取对象

时间:2016-06-13 09:27:01

标签: node.js amazon-web-services amazon-s3

我有一个我在nodejs中构建的路由,它基本上可以抓取S3存储桶中的所有对象。目前,我只是控制台将它们记录下来。

s3.listObjects({Bucket: 'store-generated-images'}).eachPage(function(err, data) {

    console.log(data.Contents);

})

从此我得到一个object看起来像:

     { DisplayName: 'servers',
       ID: '58af203151c51eddf2fdf1679211e0b91d274a8fda23f58280f9b06371e436f7' } },
  { Key: 'generatedi_images/e7_zysitb2tp8nr2t7cymjlf04emyzbd8_q02_.png',
    LastModified: Sat Apr 23 2016 10:16:46 GMT+0100 (BST),
    ETag: '"33ff7046c9ffe29775672825ca16c1de"',
    Size: 499304,
    StorageClass: 'STANDARD',
    Owner: 

我在终端中看到这些显示的列表,直到它出错。我的错误是:

/path/to/node_modules/aws-sdk/lib/request.js:31
            throw err;
            ^

TypeError: Cannot read property 'Contents' of null

我的问题。这个错误是否意味着S3存储桶中没有更多对象?

我怎么知道我什么时候有了所有物品?

谢谢!

1 个答案:

答案 0 :(得分:1)

我不知道该错误是否意味着S3中没有更多数据。但我认为您可以使用更高效的代码,如下所示:

s3.listObjects({Bucket: 'store-generated-images'}).eachPage(function(err, data) {
    if(err) {
        console.log('Error in fetching data' + JSON.stringify(err));
    } else {
        if(data && data.Contents) {
            console.log(data.Contents);
        } else {
            console.log('No data in S3!');
        }
    }
})

如果您从错误优先方法中收到任何错误,请尝试记录。