node.js - aws-sdk S3 : best way to list all keys with listObjectsV2

标签 node.js amazon-s3

使用 listObjects API 调用的 v1 版本,您可以从 SO answer 中完成类似的操作.

var allKeys = [];
function listAllKeys(marker, cb) {
  s3.listObjects({Bucket: s3bucket, Marker: marker}, function(err, data){
     allKeys.push(data.Contents);

    if(data.IsTruncated)
       listAllKeys(data.NextMarker, cb);
    else
       cb();
  });
}

listObjectsV2 函数的等效项是什么?

最佳答案

我认为这是最好的方法:

const AWS = require('aws-sdk');
const s3 = new AWS.S3();

const listAllKeys = (params, out = []) => new Promise((resolve, reject) => {
  s3.listObjectsV2(params).promise()
    .then(({Contents, IsTruncated, NextContinuationToken}) => {
      out.push(...Contents);
      !IsTruncated ? resolve(out) : resolve(listAllKeys(Object.assign(params, {ContinuationToken: NextContinuationToken}), out));
    })
    .catch(reject);
});

listAllKeys({Bucket: 'bucket-name'})
  .then(console.log)
  .catch(console.log);

关于node.js - aws-sdk S3 : best way to list all keys with listObjectsV2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42394429/

相关文章:

javascript - 如何使用 mongoose 尊重 NodeJS 应用程序中的执行顺序

javascript - Node js - 如何访问同一 Controller 中的另一个函数

javascript - 在nodejs服务器上解析formdata请求

amazon-s3 - 位置参数不是有效的 S3 uri - AWS::Include Location 不接受本地路径,但接受 S3 位置

java - 找不到 awssdk_config_override.json 文件 - 异常 AWSSDK

python - 使用Python将文件上传到S3(保留原始文件夹结构)并具有正确的MIME类型

javascript - 使用带有参数回调的数组的 Node 异步 waterfall

javascript - 从 GitHub 贡献事件中排除 package-lock.json

java - 使用 AWS S3 Java 将 ZipOutputStream 上传到 S3 而无需将 zip 文件(大)临时保存到磁盘

javascript - 将 Cordova camera.getPicture 文件传递​​到 AWS S3 (JS SDK)