मैं कैसे बता सकता हूं कि मैंने S3 बाल्टी में कितनी वस्तुओं को संग्रहीत किया है?


155

जब तक मैं कुछ याद नहीं कर रहा हूं, ऐसा लगता है कि जिन एपीआई को मैंने देखा है, उनमें से कोई भी आपको नहीं बताएगा कि S3 बाल्टी / फ़ोल्डर (उपसर्ग) में कितने ऑब्जेक्ट हैं। क्या कोई गिनती पाने का कोई तरीका है?


यह सवाल मददगार हो सकता है: stackoverflow.com/questions/701545/…
ब्रेंडन लॉन्ग

1
समाधान अब 2015 में मौजूद है: stackoverflow.com/a/32908591/578989
मयंक जायसवाल

मेरा जवाब नीचे देखें: stackoverflow.com/a/39111698/996926
advncd

जवाबों:


39

कोई रास्ता नहीं है, जब तक आप

  1. उन सभी को 1000 के बैचों में सूचीबद्ध करें (जो धीमा हो सकता है और बैंडविड्थ को चूस सकता है - अमेज़ॅन को लगता है कि कभी भी एक्सएमएल प्रतिक्रियाओं को संपीड़ित नहीं किया जाता है), या

  2. S3 पर अपने खाते में लॉग इन करें, और खाता - उपयोग पर जाएं। ऐसा लगता है कि बिलिंग विभाग को पता है कि आपने कितनी वस्तुओं को संग्रहीत किया है!

बस अपनी सभी वस्तुओं की सूची को डाउनलोड करने में वास्तव में कुछ समय लगेगा और यदि आपके पास 50 मिलियन ऑब्जेक्ट संग्रहीत हैं तो कुछ पैसे खर्च होंगे।

इस धागे को StorageObjectCount के बारे में भी देखें - जो उपयोग डेटा में है।

कम से कम मूल बातें प्राप्त करने के लिए एक S3 एपीआई, भले ही यह घंटों पुराना हो, बहुत अच्छा होगा।


वह लिंक मर चुका है, वैसे।
-प्रांगण


यदि आप मेरी तरह आलसी हैं, तो Newvem मूल रूप से आपकी ओर से ऐसा करता है और आपके S3 खाते में प्रति-बाल्टी स्तर पर परिणामों को एकत्रित / ट्रैक करता है।
rcoup

2
क्या आप @ MayankJaiswal की प्रतिक्रिया को शामिल करने के लिए अपनी प्रतिक्रिया अपडेट कर सकते हैं?
जोसेफ केसी

1
बिलिंग विभाग सभी जानता है! कोई आश्चर्य नहीं कि उनके पास दुर्घटना से s3 पूर्वी तट को नीचे ले जाने की शक्ति है
स्की

256

AWS सीएलआई का उपयोग करना

aws s3 ls s3://mybucket/ --recursive | wc -l 

या

aws cloudwatch get-metric-statistics \
  --namespace AWS/S3 --metric-name NumberOfObjects \
  --dimensions Name=BucketName,Value=BUCKETNAME \
              Name=StorageType,Value=AllStorageTypes \
  --start-time 2016-11-05T00:00 --end-time 2016-11-05T00:10 \
  --period 60 --statistic Average

नोट: उपरोक्त क्लाउडवॉच कमांड कुछ के लिए काम करती है जबकि कुछ अन्य के लिए नहीं। यहां चर्चा की गई: https://forums.aws.amazon.com/thread.jspa?threadID=217050

AWS वेब कंसोल का उपयोग करना

आप क्लाउडवॉच के मेट्रिक सेक्शन को देख सकते हैं कि इसमें कितनी संख्या में वस्तुओं को संग्रहीत किया गया है। यहाँ छवि विवरण दर्ज करें

मेरे पास लगभग 50 मिलियन उत्पाद हैं और उपयोग करने के लिए गणना करने में एक घंटे से अधिक समय लगा aws s3 ls


18
यह शीर्ष के करीब होना चाहिए।
जोसेफ केसी

3
@ जोसेफमैसी मैं सहमत हूं। यह इस तरह से एक बाल्टी के साथ एक निर्देशिका में वस्तुओं की संख्या देने के लिए काम करता है:aws s3 ls s3://mybucket/mydirectory/ --recursive | wc -l
टिम पीटरसन

1
जब मैं cmd ​​प्रॉम्प्ट में ऊपर चला गया तो यह त्रुटि देता है - 'wc' को आंतरिक या बाहरी कमांड, ऑपरेशनल प्रोग्राम या बैच फ़ाइल के रूप में मान्यता नहीं दी जाती है। - मैं इस के लिए बहुत नया हूँ ताकि कोई समाधान दे सके?
सांडुन

CloudWatch बहुत विश्वसनीय नहीं लगता है कि एक चेतावनी। मेरे पास एक बाल्टी में एक mp4 फ़ाइल है जिसे CloudWatch (NumberOfObjects मीट्रिक) 2,300 अलग-अलग ऑब्जेक्ट्स के रूप में गिना जाता है। मुझे AWS सीएलआई के साथ सही संख्या मिली।
एलेक्स मार्क

क्यों "औसत"? क्या कोई इसके बदले "सम" नहीं चाहेगा?
ffxsam

150

एक --summarizeस्विच है जिसमें बाल्टी सारांश जानकारी (यानी वस्तुओं की संख्या, कुल आकार) शामिल है।

यहां AWS cli का उपयोग करके सही उत्तर दिया गया है:

aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"

Total Objects: 194273

दस्तावेज देखें


4
यह बहुत अच्छा है: Total Objects: 7235 Total Size: 475566411749- इतना आसान है।
bon

16
अभी भी हजारों वस्तुओं को सूचीबद्ध करने का प्रमुख काम है, दुर्भाग्यवश (वर्तमान में 600,000 से अधिक, इसलिए यह काफी समय लेने वाला है)
माइकलक्रिको

5M ऑब्जेक्ट के साथ बाल्टी पर इस कार्य को चलाने में कितना खर्च आएगा?
साइकोजोइक

2
यह जवाब बेहद अक्षम है, संभावित रूप से बहुत धीमा और महंगा है। यह उत्तर खोजने के लिए पूरी बाल्टी पर पुनरावृत्ति करता है।
बुनकर

2
और क्या मैं जोड़ सकता हूं, कि मानक भंडारण में संग्रहीत 1.2 बिलियन से अधिक वस्तुओं की पुनरावृत्ति, इसकी लागत लगभग $ 6000 डॉलर हो सकती है।
सी जॉनसन

66

हालांकि यह एक पुराना सवाल है, और 2015 में प्रतिक्रिया प्रदान की गई थी, अभी यह बहुत सरल है, क्योंकि S3 वेब कंसोल ने "गेट आकार" विकल्प को सक्षम किया है:

यहाँ छवि विवरण दर्ज करें

जो निम्नलिखित प्रदान करता है:

यहाँ छवि विवरण दर्ज करें


1
हां, नया AWS कंसोल, हालांकि यह मेरी आंखों को नुकसान पहुंचाता है, यह एक बटन की क्लिक पर उपलब्ध वस्तुओं की संख्या और कुल आकार की गणना करता है।
i

11
यह केवल फ़ोल्डर स्तर पर काम करने के लिए प्रकट होता है। "आकार प्राप्त करें" बाल्टी स्तर पर उपलब्ध नहीं है
जी-।

1
@ जी। यदि आप बाल्टी के सभी फ़ोल्डर्स का चयन करते हैं तो क्या होगा?

4
@ जी। हालांकि, "सभी का चयन करें" बॉक्स केवल उन फ़ोल्डर और ऑब्जेक्ट का चयन करता है जो पृष्ठ में दिखाए जाते हैं, बाल्टी के सभी फ़ोल्डर / ऑब्जेक्ट नहीं।
गपरिस

2
@gparis अच्छी बात है। अच्छी तरह से ध्यान देने योग्य। धन्यवाद। इसलिए ऐसा प्रतीत होता है कि कंसोल में, हमारे पास कोई विकल्प नहीं है यदि एक ही पृष्ठ पर प्रदर्शित की जाने वाली फ़ाइलों या फ़ोल्डरों से अधिक हो
G-।

50

यदि आप उपयोग करते हैं s3cmd कमांड-लाइन टूल का , तो आप एक विशेष बाल्टी की पुनरावर्ती सूची प्राप्त कर सकते हैं, इसे एक पाठ फ़ाइल में आउटपुट कर सकते हैं।

s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt

फिर लाइनक्स में आप लाइनों (1 पंक्ति प्रति ऑब्जेक्ट) की गणना करने के लिए फ़ाइल पर एक wc -l चला सकते हैं।

wc -l listing.txt

-rआदेश में के लिए है --recursive, तो यह रूप में अच्छी तरह उप फ़ोल्डरों के लिए काम करना चाहिए।
दीपक जॉय

इस पर 3 नोट। a।) आपको aws s3 lss3cmd के बजाय उपयोग करना चाहिए क्योंकि यह तेज है। बी।) बड़ी बाल्टियों के लिए एक लंबा समय लग सकता है। 1mil फ़ाइलों के लिए लगभग 5 मिनट लिया। सी।) क्लाउडवॉच का उपयोग करने के बारे में नीचे मेरा जवाब देखें।
मास्टाब्लास्टा

46

अब S3 API के साथ एक आसान समाधान है (AWS क्ली में उपलब्ध):

aws s3api list-objects --bucket BUCKETNAME --output json --query "[length(Contents[])]"

या एक विशिष्ट फ़ोल्डर के लिए:

aws s3api list-objects --bucket BUCKETNAME --prefix "folder/subfolder/" --output json --query "[length(Contents[])]"

1
राफेल, आपका फ़ोल्डर क्वेरी बहुत बढ़िया काम करता है, सिवाय इसके कि जब फ़ोल्डर खाली हो या मौजूद न हो, तो आपको मिलता है: फ़ंक्शन लंबाई में (), मान के लिए अमान्य प्रकार: कोई नहीं, अपेक्षित एक: ['स्ट्रिंग', 'सरणी' , 'ऑब्जेक्ट'], प्राप्त: "null" क्या केवल आउटपुट 0 बनाने का एक तरीका है यदि फ़ोल्डर खाली है या बाहर नहीं निकलता है?
user3591836

1
मुझे मिलता है Illegal token value '(Contents[])]' (संस्करण 1.2.9 aws-cli का), जब बस का उपयोग कर रहा है --bucket my-bucketऔर A client error (NoSuchBucket) occurred when calling the ListObjects operation: The specified bucket does not existजब उपयोग कर रहा है --bucket s3://my-bucket। (यह निश्चित रूप से मौजूद है, और इसमें 1000+ फाइलें हैं।)
डैरेन कुक

@DarrenCook बाल्टी नाम से s3: // निकालें। क्लाइंट प्रोटोकॉल का समर्थन नहीं करता है।
श्रीरंजन मंजूनाथ

यह wc -l उदाहरणों की तुलना में बहुत तेज है। मेरी बाल्टी के साथ यह लगभग 3-4k वस्तुओं / सेकंड की गणना करेगा। तो ~ 5mins प्रति मिलियन ऑब्जेक्ट। एस 3 वेब जीयूआई में "गेट साइज" संभवत: हुड के नीचे कुछ इसी तरह का उपयोग करता है क्योंकि इसमें लगभग एक ही समय लगता है।
नोटरी

के लिए बहुत बड़ी बाल्टी, इस एकमात्र समाधान था कि (कम से कम 20 मिनट) से एक उचित समय के भीतर मेरे लिए काम किया
निक सर्राफा

40

आप प्रत्येक बकेट के लिए सटीक गणना देखने के लिए s3 के लिए AWS क्लाउडवॉच मेट्रिक्स का उपयोग कर सकते हैं। जब आप बाल्टी का चयन करते हैं तो क्लाउडवॉच मीट्रिक


मुझे लगता है कि यह सबसे अच्छा जवाब है
ओकटाव

केवल वास्तविक उत्तर, बिना कुछ हास्यास्पद किए जैसे सूची 1 मी + कुंजी। मैं भूल गया था कि यह वहाँ था।
एंड्रयू बैकर

इसके लिए अधिक उर्जा की आवश्यकता है। हर दूसरा समाधान लागत और समय के संदर्भ में खराब होता है।
हारून आर

5

AWS बिलिंग पर जाएं, फिर रिपोर्ट, फिर AWS उपयोग रिपोर्ट। अमेज़ॅन सिंपल स्टोरेज सर्विस का चयन करें, फिर ऑपरेशन स्टैंडर्डस्टोरेज। फिर आप एक CSV फ़ाइल डाउनलोड कर सकते हैं जिसमें StorageObjectCount का एक यूसेजटाइप शामिल है जो प्रत्येक बाल्टी के लिए आइटम गणना को सूचीबद्ध करता है।


4

आप आसानी से कुल गणना और इतिहास प्राप्त कर सकते हैं यदि आप s3 कंसोल "प्रबंधन" टैब पर जाते हैं और फिर "मेट्रिक्स" पर क्लिक करें ... टैब का स्क्रीन शॉट


क्या आप NumberOfObjects (count/day)चार्ट दिखाने के लिए तस्वीर को अपडेट कर सकते हैं ? यह बेहतर होगा क्योंकि इसके सीधे सवाल से संबंधित है। आपके स्क्रीनशॉट में, आप दिखा रहे हैं BucketSizeBytes (bytes/day), जबकि उपयोगी, सीधे मुद्दे से संबंधित नहीं है।
गुज्मोने

1
2019 तक, यह अब स्वीकृत उत्तर होना चाहिए। बाकी सभी पुराने या धीमे हैं।
सी जॉनसन

2

एपी 1000 की वेतन वृद्धि में सूची लौटाएगा। यह देखने के लिए कि क्या अभी भी अधिक हैं, IsTruncated संपत्ति की जाँच करें। यदि वहाँ हैं, तो आपको एक और कॉल करने की आवश्यकता है और अगली कॉल पर मार्कर की संपत्ति के रूप में मिली अंतिम कुंजी को पास करें। आप तब तक इस तरह लूप करते रहेंगे जब तक कि IsTruncated झूठा न हो जाए।

अधिक जानकारी के लिए इस अमेज़न डॉक को देखें: मल्टी-पेज परिणाम के माध्यम से Iterating


2

पुराने धागे, लेकिन अभी भी प्रासंगिक के रूप में मैं जवाब के लिए देख रहा था जब तक मैं सिर्फ यह पता लगा। मुझे GUI- आधारित टूल (अर्थात कोई कोड) का उपयोग करके एक फ़ाइल गणना चाहिए थी। मैं पहले से ही S3 से ड्रैग एंड ड्रॉप ट्रांसफर के लिए 3Hub नामक टूल का उपयोग करता हूं। मैं जानना चाहता था कि एक विशेष बाल्टी में मेरे पास कितनी फाइलें हैं (मुझे नहीं लगता कि यह बाल्टी से टूट जाती है)।

So, using 3Hub, 
- list the contents of the bucket (looks basically like a finder or explorer window)
- go to the bottom of the list, click 'show all'
- select all (ctrl+a)
- choose copy URLs from right-click menu
- paste the list into a text file (I use TextWrangler for Mac) 
- look at the line count  

मेरे पास बाल्टी में 20521 फाइलें थीं और एक मिनट से भी कम समय में फाइल की गिनती हुई।


2

मैं से अजगर स्क्रिप्ट का इस्तेमाल किया scalablelogic.com (गिनती लॉगिंग में जोड़ने)। बढ़िया काम किया।

#!/usr/local/bin/python

import sys

from boto.s3.connection import S3Connection

s3bucket = S3Connection().get_bucket(sys.argv[1])
size = 0
totalCount = 0

for key in s3bucket.list():
    totalCount += 1
    size += key.size

print 'total size:'
print "%.3f GB" % (size*1.0/1024/1024/1024)
print 'total count:'
print totalCount

बस इसलिए आप जागरूक हैं, यह boto3 के साथ काम नहीं करता है। मैंने एक अलग उत्तर के रूप में नीचे दिए गए एक सुझाव का योगदान दिया।
fuzzygroup

2

S3cmd में, बस निम्न कमांड चलाएं (उबंटू सिस्टम पर):

s3cmd ls -r s3://mybucket | wc -l

13
आपने मौजूदा उत्तर की खराब स्वरूपित प्रति पोस्ट करने के लिए 5 साल पुराने प्रश्न को क्यों पुनर्जीवित किया ?
दो-बिट अल्केमिस्ट

पिछले उत्तर ने आउटपुट को txt फ़ाइल में अनावश्यक रूप से डाला।
mjsa

10
IMO यह उस उत्तर पर एक टिप्पणी होनी चाहिए। यह वास्तव में एक तुच्छ अंतर है।
दो-बिट अल्केमिस्ट

2
एक योग्य उत्तर की तरह लगता है- खासकर जब से इस प्रश्न के लिए चयनित उत्तर 'कोई रास्ता नहीं है ...' से शुरू होता है और @mjsa ने एक-लाइन उत्तर प्रदान किया है।
नान

यह एक अच्छा जवाब नहीं है क्योंकि यह संस्करणित वस्तुओं को ध्यान में नहीं रखता है।
3h4x

2

यदि आप Windows पर AWS CLI का उपयोग कर रहे हैं, तो आप Measure-ObjectPowerShell से फ़ाइलों की कुल संख्या प्राप्त करने के लिए उपयोग कर सकते हैं , ठीक वैसे ही जैसे wc -l* nix पर।

PS C:\> aws s3 ls s3://mybucket/ --recursive | Measure-Object

Count    : 25
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

आशा करता हूँ की ये काम करेगा।


2

S3 में वस्तुओं की संख्या की गणना करने का सबसे सरल तरीका है:

Step1: रूट फ़ोल्डर का चयन करें Step2: क्रिया पर क्लिक करें -> हटाएं (जाहिर है, सावधान रहें इसे हटाएं नहीं) Step3: कुछ मिनट प्रतीक्षा करें aws आपको ऑब्जेक्ट्स की संख्या और उसका कुल आकार दिखाएगा।

अगर आपको इसका हल मिल जाए तो UpVote करें।


1

एपीआई में से कोई भी आपको एक गिनती नहीं देगा क्योंकि ऐसा करने के लिए वास्तव में कोई अमेज़न विशिष्ट एपीआई नहीं है। आपको केवल एक सूची-सामग्री चलानी होगी और वापस किए गए परिणामों की संख्या की गणना करनी होगी।


किसी कारण से, रूबी लिबास (right_aws / appoxy_aws) एक बाल्टी में पहले 1000 से अधिक वस्तुओं को सूचीबद्ध नहीं करेगा। क्या अन्य हैं जो सभी वस्तुओं को सूचीबद्ध करेंगे?
खेतों

जब आप सूची का अनुरोध करते हैं, तो वे "NextToken" फ़ील्ड प्रदान करते हैं, जिसका उपयोग आप टोकन के साथ फिर से अनुरोध भेजने के लिए कर सकते हैं, और यह अधिक सूची देगा।
मिच डेम्पसे

1

AWS सीएलआई में कमांड लाइन से, उपयोग करें ls plus --summarize। यह आपको अपने सभी वस्तुओं की सूची और एक विशेष बाल्टी में दस्तावेजों की कुल संख्या देगा। मैंने उप-बाल्टियों वाली बाल्टियों के साथ यह कोशिश नहीं की है:

aws s3 ls "s3://MyBucket" --summarize

यह थोड़ा लंबा हो जाता है (इसमें 4 मिनट के बारे में मेरे 16 + के दस्तावेजों को सूचीबद्ध किया गया), लेकिन यह एक समय में 1K की गिनती की तुलना में तेज़ है।



0

3Hub बंद है। एक बेहतर समाधान है, आप ट्रांसमिट (केवल मैक) का उपयोग कर सकते हैं , फिर आप बस अपनी बाल्टी से कनेक्ट कर सकते हैं और मेनू Show Item Countसे चुन सकते हैं View


दुर्भाग्य से प्रसारण केवल एक 1000 आइटम (और आइटम गणना इसलिए 1000 पर भी अधिकतम हो जाता है) को दिखाता है
टीनो

0

आप http://s3browser.com/ से s3 ब्राउज़र डाउनलोड और इंस्टॉल कर सकते हैं । जब आप केंद्र दाएं कोने में एक बाल्टी का चयन करते हैं तो आप बाल्टी में फ़ाइलों की संख्या देख सकते हैं। लेकिन, वर्तमान संस्करण में इसका आकार गलत है।

Gubs


0

सबसे आसान तरीका डेवलपर कंसोल का उपयोग करना है, उदाहरण के लिए, यदि आप क्रोम पर हैं, तो डेवलपर टूल चुनें, और आप निम्नलिखित देख सकते हैं, आप 280-279 + 1 = 2 जैसे कुछ मैच या तो ढूंढ और गिन सकते हैं या कर सकते हैं।

...


क्या आप किसी बाल्टी में वस्तुओं की कुल संख्या का पता लगाने के लिए डेवलपर टूल का उपयोग कैसे करते हैं, इस पर कुछ और विवरण जोड़ सकते हैं।
जुगल पांचाल

0

आप संभावित रूप से अमेज़ॅन एस 3 इन्वेंट्री का उपयोग कर सकते हैं जो आपको सीएसवी फ़ाइल में वस्तुओं की सूची देगा


0

मुझे S3 ब्राउज़र टूल बहुत उपयोगकर्ता के रूप में मिला, यह फ़ाइलों और फ़ोल्डरों और कुल गणना के साथ-साथ किसी भी फ़ोल्डर के लिए पुनरावर्ती आकार प्रदान करता है

डाउनलोड लिंक: https://s3browser.com/download.aspx



0

बाल्टी या विशिष्ट फ़ोल्डर में कुल फ़ाइल संख्या प्राप्त करने के लिए आप इस cli कमांड को निष्पादित कर सकते हैं

पूरी बाल्टी स्कैन करें

aws s3api list-objects-v2 --bucket testbucket | grep "Key" | wc -l
aws s3api list-objects-v2 --bucket BUCKET_NAME | grep "Key" | wc -l

आप विवरण प्राप्त करने के लिए इस कमांड का उपयोग कर सकते हैं

aws s3api list-objects-v2 --bucket BUCKET_NAME

किसी विशिष्ट फ़ोल्डर को स्कैन करें

aws s3api list-objects-v2 --bucket testbucket --prefix testfolder --start-after testfolder/ | grep "Key" | wc -l

aws s3api list-objects-v2 --bucket BUCKET_NAME --prefix FOLDER_NAME --start-after FOLDER_NAME/ | grep "Key" | wc -l

0

यदि आप विशिष्ट फ़ाइलों की तलाश कर रहे हैं, तो हम कहते हैं कि .jpgआप निम्न चित्र कर सकते हैं:

aws s3 ls s3://your_bucket | grep jpg | wc -l

0

निम्नलिखित आप जावा क्लाइंट का उपयोग करके कैसे कर सकते हैं।

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-java-sdk-s3</artifactId>
    <version>1.11.519</version>
</dependency>
import com.amazonaws.ClientConfiguration;
import com.amazonaws.Protocol;
import com.amazonaws.auth.AWSStaticCredentialsProvider;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ObjectListing;

public class AmazonS3Service {

    private static final String S3_ACCESS_KEY_ID = "ACCESS_KEY";
    private static final String S3_SECRET_KEY = "SECRET_KEY";
    private static final String S3_ENDPOINT = "S3_URL";

    private AmazonS3 amazonS3;

    public AmazonS3Service() {
        ClientConfiguration clientConfiguration = new ClientConfiguration();
        clientConfiguration.setProtocol(Protocol.HTTPS);
        clientConfiguration.setSignerOverride("S3SignerType");
        BasicAWSCredentials credentials = new BasicAWSCredentials(S3_ACCESS_KEY_ID, S3_SECRET_KEY);
        AWSStaticCredentialsProvider credentialsProvider = new AWSStaticCredentialsProvider(credentials);
        AmazonS3ClientBuilder.EndpointConfiguration endpointConfiguration = new AmazonS3ClientBuilder.EndpointConfiguration(S3_ENDPOINT, null);
        amazonS3 = AmazonS3ClientBuilder.standard().withCredentials(credentialsProvider).withClientConfiguration(clientConfiguration)
                .withPathStyleAccessEnabled(true).withEndpointConfiguration(endpointConfiguration).build();
    }

    public int countObjects(String bucketName) {
        int count = 0;
        ObjectListing objectListing = amazonS3.listObjects(bucketName);
        int currentBatchCount = objectListing.getObjectSummaries().size();
        while (currentBatchCount != 0) {
            count += currentBatchCount;
            objectListing = amazonS3.listNextBatchOfObjects(objectListing);
            currentBatchCount = objectListing.getObjectSummaries().size();
        }
        return count;
    }
}

0

यहाँ ऊपर उल्लिखित अजगर स्क्रिप्ट का boto3 संस्करण है।

import sys
import boto3

s3 = boto3.resource('s3')
s3bucket = s3.Bucket(sys.argv[1])
size = 0
totalCount = 0

for key in s3bucket.objects.all():
    totalCount += 1
    size += key.size

print('total size:')
print("%.3f GB" % (size*1.0/1024/1024/1024))
print('total count:')
print(totalCount)`

0

aws s3 ls s3: // बाल्टी-नाम / फ़ोल्डर-उपसर्ग-अगर-कोई -recursive | wc -l


यह 1000 से अधिक के लिए काम करता है यह मेरे लिए 4258 गिना
KingAndrew

लाइनों सीधे फ़ाइलों की संख्या के अनुरूप नहीं है। क्योंकि उनके पास भी तारीख और निर्देशिका के लिए एक पूरी लाइन है।
CMCDragonkai

कमांड सीमित संख्या में फाइलों के लिए काम करती है। मेरे मामले में, फाइलों की संख्या एक मिलियन से अधिक है और यह कभी भी कोई परिणाम नहीं देता है। लेकिन यह सीमित फाइलों के लिए एक अच्छा विकल्प है।
जुगल पांचाल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.