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



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

我正在 nodejs 中尝试相同的功能:如果我尝试使用 s500 getObject 和存档下载以下 ~3 个文件.文件被下载并存档到本地磁盘(使用 nodejs(。

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

您受到亚马逊的费率限制。

该页面有解决这个问题的指南。您必须减少请求计数或对其进行批处理,或者迁移到其他服务,例如 Amazon CloudFront (CDN( 或 Akamai。