得到所有亚马逊S3文件内的一个桶内承诺

0

的问题

我试图抓住数以千计的文件从亚马逊S3内的承诺,但我似乎无法找出如何包括的ContinuationToken内如果清单被截断,并聚集在一起内的承诺。 我是个新手JS和可以使用一些帮助。 这里是我有什么,迄今为止:

getFiles()
    .then(filterFiles)
    .then(mapUrls)
;

function getFiles(token) {
    var params = {
        Bucket: bucket,
        MaxKeys: 5000,
        ContinuationToken: token
    };
    var allKeys = [];

    var p = new Promise(function(resolve, reject){
    s3.listObjectsV2(params, function(err, data) {
      if (err) { 
        return reject(err);
      }
      allKeys.push(data.Contents)
      if (data.IsTruncated) {
        s3.listObjectsV2({Bucket: bucket, MaxKeys: 5000, ContinuationToken: data.NextContinuationToken})
        console.log('Getting more images...');
        allKeys.push(data.Contents)
      }
      resolve(data.Contents);
    });
  });

  return p;
}

我需要的功能继续运行直到我已经创建了一个列表中的所有对象的斗返回。

amazon-web-services aws-sdk javascript
2021-10-25 16:01:51
2
0

你需要 ContinuationToken 第二次只。

var params = {
    Bucket: bucket,
    MaxKeys: 5000,
};

if (data.IsTruncated) {
    s3.listObjectsV2({...params, ContinuationToken: data.NextContinuationToken})

海事组织,这只是一个s3函数的两倍,更像是一个嵌套 呼叫。 递归功能时直叫自己 直到一个指定的条件得到满足。

解更多关于递归: https://medium.com/@vickdayaram/recursion-caad288bf621

2021-10-25 16:29:42

好点的-我会更新我的问题有更详细的说明。 我需要的功能继续运行,直到所有文件已经被检索。
AppleBaggins
0

我能要列表中的所有对象的斗中使用异步/等待和代码下面填充阵列。

async function getFiles(objects = []) {
    const response = await s3.listObjectsV2(params).promise();
    response.Contents.forEach(obj => filelist.push(obj.Key));
    if (response.NextContinuationToken) {
        params.ContinuationToken = response.NextContinuationToken;
        await getFiles(params, objects);
    }
    console.log(filelist.length)
    return filelist;
}

感谢所有帮助!

2021-10-26 00:59:26

其他语言

此页面有其他语言版本

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................