Nodejs:s3 getObject用于非常大量的文件下载和归档失败

时间:2017-05-28 03:57:39

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

我可以使用boto.s3.resumable_download_handler和boto.s3.connection从s3存储桶中下载非常大的~2000个文件到python中的本地磁盘。下载并归档到本地磁盘中的tar文件。它有效。

我在nodejs中尝试相同的功能: 如果我尝试使用s3 getObject和archive下载~500个文件。文件被下载并存档到本地磁盘(使用nodejs)。

我正在尝试使用s3 getObject下载非常大的~2000个文件,并使用nodejs中的归档将这些文件从服务器归档到本地磁盘。 我收到s3错误:请降低您的请求率。服务不可用:请降低您的请求率。

代码段:

       var AWS = require('aws-sdk');
       var archiver = require('archiver');
       var fs = require('fs');
       var OutputFileName = 'abc.zip'

       s3Client.listObjects(parameters, function(error, data) {
         var dataConts = data.Contents;
         dataConts.forEach(function(dataE) {
           var aparams = {Bucket: bucketName, Key: dataE.Key};

           archive.append(s3Client.getObject(aparams).createReadStream(),
             { name: dataE.Key }
           );

           archive.on('error', function(error) {
             throw error;
           });

           archive.on('end', function() {
             callback();
           });

           response.attachment(OutputFileName);
           archive.pipe(respose);
           archive.finalize();
        });
      });

任何人都可以告诉我s3和archive是否可以以任何其他方式用于下载和存档大量文件。

1 个答案:

答案 0 :(得分:0)

你正在rate limited by Amazon

该页面有解决该问题的指南。您必须减少请求数量或批量处理,或迁移到其他服务,如Amazon CloudFront(CDN)或Akamai。