Node.js Nodejs:s3获取大量文件的对象下载和存档失败

Node.js Nodejs:s3获取大量文件的对象下载和存档失败,node.js,amazon-web-services,amazon-s3,Node.js,Amazon Web Services,Amazon S3,我能够使用boto.s3.resubable_download_处理程序和boto.s3.connection将非常大的~2000个文件从s3 bucket下载到python中的本地磁盘。下载并存档到本地磁盘中的tar文件。它起作用了 我正在nodejs中尝试相同的功能: 如果我试图使用s3 getObject和archive下载低于500个文件。文件被下载并归档到本地磁盘(使用nodejs) 我正在尝试使用s3 getObject下载非常大的~2000个文件,并使用archive in nod

我能够使用boto.s3.resubable_download_处理程序和boto.s3.connection将非常大的~2000个文件从s3 bucket下载到python中的本地磁盘。下载并存档到本地磁盘中的tar文件。它起作用了

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

我正在尝试使用s3 getObject下载非常大的~2000个文件,并使用archive in 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是否可以以任何其他方式用于下载和归档大量文件。

您正在使用


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

标签
python
不适用于this@Yamini你能想出一个解决方案吗?我需要一个几乎完全相同的东西,但是使用谷歌存储。谢谢你的回复。您能告诉我如何在nodejs中使用archive和s3对其进行批处理吗?这将是一个单独的问题。提出一个新问题。我不认为有必要提出新问题。速率限制显然是所示代码中严重错误的副作用。存档对象在这里显然被误用了,使用新创建的S3 objecr数据流连续快速地调用append,而不是等待响应,并在循环内部而不是之前反复调用
archive.on()
。感谢您的响应。我已将archive.on移到foreach上方,以便它不在循环内。但我还是看到了同样的行为。