使用 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/