सभी अमेज़न S3 फ़ाइलों के अंदर एक बाल्टी के भीतर वादा

0

सवाल

मैं कोशिश कर रहा हूँ हड़पने के लिए फ़ाइलों के हजारों से अमेज़न S3 के भीतर एक वादा करता हूँ, लेकिन मैं प्रतीत नहीं कर सकते करने के लिए बाहर आंकड़ा कैसे करने के लिए शामिल ContinuationToken के भीतर यदि सूची छोटा है और यह सब एक साथ इकट्ठा के भीतर वादा करता हूँ. मैं कर रहा हूँ एक नौसिखिया जे एस के साथ और कुछ मदद इस्तेमाल कर सकते. यहाँ है कि मैं क्या है, इतनी दूर है:

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/इंतजार और नीचे दिए गए कोड को आबाद करने के लिए एक सरणी.

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ý
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में