যতক্ষণ না আমি কিছু মিস করছি, মনে হচ্ছে আমি যে এপিআইগুলিতে দেখেছি তাদের কোনওই আপনাকে এস -3 বালতি / ফোল্ডারে (উপসর্গ) কতটা অবজেক্ট রয়েছে তা আপনাকে জানাতে পারবে না। একটি গণনা পাওয়ার কোনও উপায় আছে?
যতক্ষণ না আমি কিছু মিস করছি, মনে হচ্ছে আমি যে এপিআইগুলিতে দেখেছি তাদের কোনওই আপনাকে এস -3 বালতি / ফোল্ডারে (উপসর্গ) কতটা অবজেক্ট রয়েছে তা আপনাকে জানাতে পারবে না। একটি গণনা পাওয়ার কোনও উপায় আছে?
উত্তর:
কোনও উপায় নেই, যদি না আপনি
তাদের সকলকে 1000 এর ব্যাচে তালিকাবদ্ধ করুন (যা ধীর হতে পারে এবং ব্যান্ডউইথ চুষতে পারে - অ্যামাজন কখনও এক্সএমএল প্রতিক্রিয়াগুলি সঙ্কোচিত করে না বলে মনে হয়), বা
S3 এ আপনার অ্যাকাউন্টে লগইন করুন, এবং অ্যাকাউন্ট - ব্যবহারে যান। দেখে মনে হচ্ছে বিলিং ডিপেক্টর জানেন যে আপনি ঠিক কতটি জিনিস সংরক্ষণ করেছেন!
আপনার সমস্ত অবজেক্টের তালিকাটি কেবল ডাউনলোড করতে আসলে আপনার কিছুটা সময় লাগে এবং যদি আপনার 50 মিলিয়ন অবজেক্ট সঞ্চিত থাকে তবে কিছু অর্থ ব্যয় হবে।
আরো দেখুন StorageObjectCount সম্পর্কে এই থ্রেড যা ব্যবহারের ডেটা রয়েছে -।
অন্তত বেসিকগুলি পেতে একটি এস 3 এপিআই, এটি ঘন্টার পুরানো হলেও, দুর্দান্ত হবে।
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
আপনি তাকান করতে cloudwatch এর মেট্রিক অধ্যায় সঞ্চিত বস্তুর প্রায় নম্বর পেতে।
আমার প্রায় 50 মিলিয়ন পণ্য রয়েছে এবং এটি ব্যবহার করে গণনা করতে এক ঘন্টারও বেশি সময় নিয়েছিল aws s3 ls
aws s3 ls s3://mybucket/mydirectory/ --recursive | wc -l
একটি --summarize
স্যুইচ রয়েছে যার মধ্যে বালতি সংক্ষিপ্তসার সম্পর্কিত তথ্য রয়েছে (অর্থাত্ সামগ্রীর সংখ্যা, মোট আকার)।
এডাব্লুএস ক্লিমে ব্যবহার করে সঠিক উত্তর এখানে দেওয়া হয়েছে:
aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"
Total Objects: 194273
ডকুমেন্টেশন দেখুন
Total Objects: 7235
Total Size: 475566411749
- এত সহজ।
যদিও এটি একটি পুরানো প্রশ্ন, এবং প্রতিক্রিয়া 2015 সালে সরবরাহ করা হয়েছিল, এখনই এটি অনেক সহজ, এস 3 ওয়েব কনসোল একটি "আকার নিন" বিকল্পটি সক্ষম করেছে:
যা নিম্নলিখিত সরবরাহ করে:
আপনি যদি s3cmd কমান্ড-লাইন সরঞ্জামটি ব্যবহার করেন , আপনি একটি নির্দিষ্ট বালতির একটি পুনরাবৃত্ত তালিকা পেতে পারেন, এটি একটি পাঠ্য ফাইলে আউটপুট করে।
s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt
তারপরে লিনাক্সে আপনি রেখাগুলি গণনার জন্য ফাইলটিতে একটি ডাব্লুসি-এল চালাতে পারেন (প্রতিটি বস্তুর জন্য 1 লাইন)
wc -l listing.txt
-r
কমান্ডে জন্য --recursive
, তাই এটি হিসাবে ভাল উপ-ফোল্ডার জন্য কাজ করা উচিত।
aws s3 ls
এস 3 সিএমডি এর চেয়ে বেশি ব্যবহার করা উচিত কারণ এটি দ্রুত। খ।) বড় বালতিগুলির জন্য এটি একটি দীর্ঘ সময় নিতে পারে। 1 মিলিল ফাইলের জন্য প্রায় 5 মিনিট সময় নিয়েছে। সি।) ক্লাউডওয়াচ ব্যবহার সম্পর্কে আমার উত্তর নীচে দেখুন।
এখন এস 3 এপিআইয়ের সাথে একটি সহজ সমাধান রয়েছে (এডাব্লুএস ক্লায়েন্টে উপলব্ধ):
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[])]"
Illegal token value '(Contents[])]'
(অ্যাউস-ক্লাইমের 1.2.9 সংস্করণ) পেয়েছি, যখন কেবল ব্যবহার --bucket my-bucket
এবং A client error (NoSuchBucket) occurred when calling the ListObjects operation: The specified bucket does not exist
ব্যবহার করার সময় --bucket s3://my-bucket
। (এটি অবশ্যই উপস্থিত রয়েছে এবং এতে 1000+ ফাইল রয়েছে))
অ্যাডাব্লুএস বিলিং এ যান, তারপরে প্রতিবেদন করুন, তারপরে এডাব্লুএস ব্যবহারের প্রতিবেদন দিন। অ্যামাজন সিম্পল স্টোরেজ পরিষেবা নির্বাচন করুন, তারপরে অপারেশন স্ট্যান্ডার্ড স্টোরেজ। তারপরে আপনি এমন একটি সিএসভি ফাইল ডাউনলোড করতে পারেন যার মধ্যে স্টোরেজঅবজেক্টকাউন্টের একটি ব্যবহারের ধরণ রয়েছে যা প্রতিটি বালতির আইটেম গণনা তালিকাভুক্ত করে।
আপনি যদি এস 3 কনসোল "পরিচালনা" ট্যাবে যান এবং তারপরে "ম্যাট্রিক্স" ক্লিক করুন ... ট্যাবটির স্ক্রিন শট আপনি সহজেই মোট গণনা এবং ইতিহাস পেতে পারেন
NumberOfObjects (count/day)
চার্টটি দেখানোর জন্য ছবিটি আপডেট করতে পারবেন ? এটি প্রশ্নের সাথে সরাসরি সম্পর্কিত হওয়ার কারণে এটি আরও ভাল। আপনার স্ক্রিনশটটিতে, আপনি এটি প্রদর্শিত হচ্ছে BucketSizeBytes (bytes/day)
যা দরকারী হিসাবে, সরাসরি সমস্যার সাথে সম্পর্কিত নয়।
এপিআই 1000 এর ইনক্রিমেন্টে তালিকাটি ফিরিয়ে দেবে still আরও কিছু আছে কিনা তা দেখার জন্য ইসট্রাক্টেড সম্পত্তি দেখুন। যদি সেখানে থাকে, আপনাকে অন্য কল করতে হবে এবং পরবর্তী কলটিতে চিহ্নিতকারী সম্পত্তি হিসাবে আপনি যে শেষ কীটি পেয়েছিলেন তা শেষ করতে হবে। এরপরে ইসট্রঙ্কটেড মিথ্যা না হওয়া পর্যন্ত আপনি এভাবে লুপ করতে থাকবেন।
আরও তথ্যের জন্য এই অ্যামাজন ডকটি দেখুন: মাল্টি-পৃষ্ঠা ফলাফলের মাধ্যমে আইট্রেট করা
পুরানো থ্রেড, তবে এখনও আমি প্রাসঙ্গিক না হওয়া পর্যন্ত উত্তরটির সন্ধান করছিলাম। আমি জিইউআই-ভিত্তিক সরঞ্জাম (অর্থাত্ কোনও কোড নয়) ব্যবহার করে একটি ফাইল গণনা চেয়েছিলাম। আমি এস 3 থেকে এবং ড্রপ স্থানান্তরিত করার জন্য 3 হাব নামে একটি সরঞ্জাম ইতিমধ্যে ব্যবহার করেছি। আমি একটি নির্দিষ্ট বালতিতে আমার কাছে কতগুলি ফাইল রয়েছে তা জানতে চেয়েছিলাম (আমি মনে করি না বিলিং এটি বালতি দ্বারা ভেঙে ফেলে)।
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 ফাইল ছিল এবং এক মিনিটেরও কম সময়ে ফাইল গণনা করা হয়েছিল।
আমি থেকে পাইথন স্ক্রিপ্ট ব্যবহার scalablelogic.com (COUNT লগিং যোগ)। দুর্দান্ত কাজ করেছেন
#!/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
S3cmd এ কেবল নিম্নলিখিত কমান্ডটি চালান (একটি উবুন্টু সিস্টেমে):
s3cmd ls -r s3://mybucket | wc -l
আপনি যদি উইন্ডোজ এডাব্লুএস সিএলআই ব্যবহার করে থাকেন তবে আপনি * নেক্সের Measure-Object
মতো মোট সংখ্যা গণনা করতে পাওয়ারশেল থেকে ব্যবহার করতে পারেন wc -l
।
PS C:\> aws s3 ls s3://mybucket/ --recursive | Measure-Object
Count : 25
Average :
Sum :
Maximum :
Minimum :
Property :
আশা করি এটা সাহায্য করবে.
এস 3-তে বস্তুর সংখ্যা গণনা করার একটি সহজ উপায় হ'ল:
পদক্ষেপ 1: রুট ফোল্ডারটি নির্বাচন করুন পদক্ষেপ 2: অ্যাকশনগুলিতে ক্লিক করুন -> মুছুন (অবশ্যই, মুছে ফেলবেন না সাবধানতা অবলম্বন করুন) স্টিপ 3: কয়েক মিনিট অপেক্ষা করুন আপনাকে অবজেক্টের সংখ্যা এবং তার মোট আকার প্রদর্শন করবে।
সমাধানটি সন্ধান করতে পারলে ভোট দিন।
কোনও এআইপিআই আপনাকে গণনা দেবে না কারণ এটি করার জন্য কোনও অ্যামাজন নির্দিষ্ট API নেই। আপনাকে কেবল একটি তালিকা-বিষয়বস্তু চালাতে হবে এবং ফিরে আসা ফলাফলের সংখ্যা গণনা করতে হবে।
এডাব্লুএস সি এল আই-র কমান্ড লাইন থেকে, ব্যবহার করুন ls plus --summarize
। এটি আপনাকে আপনার সমস্ত আইটেমের তালিকা এবং নির্দিষ্ট বালতিতে নথিগুলির মোট সংখ্যা দেবে। সাব বালতিযুক্ত বালতি দিয়ে আমি এটি চেষ্টা করি নি:
aws s3 ls "s3://MyBucket" --summarize
এটি কিছুটা সময় নেয় (এটি আমার 16+ কে ডকুমেন্টগুলি প্রায় 4 মিনিটের তালিকাতে নিয়েছে) তবে এটি একবারে 1 কে গণনার চেয়ে দ্রুত।
এস 3 স্টোরেজ ক্লাস অ্যানালিটিকাগুলি সম্পর্কে - আপনি কনসোলের পাশাপাশি এপিআইও পান - https://docs.aws.amazon.com/AmazonS3/latest/dev/analytics-stores-class.html
3 হাব বন্ধ রয়েছে। এর চেয়ে আরও ভাল সমাধান রয়েছে, আপনি ট্রান্সমিট (কেবল ম্যাক) ব্যবহার করতে পারেন , তারপরে আপনি কেবল নিজের বালতির সাথে সংযোগ স্থাপন করুন এবং মেনু Show Item Count
থেকে চয়ন করুন View
।
আপনি http://s3browser.com/ থেকে এস 3 ব্রাউজারটি ডাউনলোড এবং ইনস্টল করতে পারেন । আপনি যখন কেন্দ্রের ডান কোণে একটি বালতি নির্বাচন করবেন তখন আপনি বালতিতে থাকা ফাইলের সংখ্যা দেখতে পাবেন। তবে, এটির আকারটি বর্তমান সংস্করণে ভুল।
Gubs
সবচেয়ে সহজ উপায় হ'ল বিকাশকারী কনসোলটি ব্যবহার করা, উদাহরণস্বরূপ, আপনি যদি ক্রোমে থাকেন তবে বিকাশকারী সরঞ্জামগুলি চয়ন করুন এবং আপনি নিম্নলিখিতটি দেখতে পাচ্ছেন, আপনি হয় 280-279 + 1 = 2 এর মতো কিছু মিল খুঁজে পেতে বা গণনা করতে বা করতে পারেন either
...
আমি এস 3 ব্রাউজারের সরঞ্জামটি খুব ব্যবহারকারী পেয়েছি, এটি ফাইল এবং ফোল্ডার এবং মোট গণনা পাশাপাশি কোনও ফোল্ডারের জন্য পুনরাবৃত্তভাবে আকার সরবরাহ করে
ডাউনলোড লিঙ্ক: https://s3browser.com/download.aspx
gsutil du
(হ্যাঁ, একটি গুগল ক্লাউড সরঞ্জাম) দিয়েও করা যায়
gsutil du s3://mybucket/ | wc -l
বালতি বা একটি নির্দিষ্ট ফোল্ডারে মোট ফাইল গণনা পাওয়ার জন্য আপনি এই ক্লাইম কমান্ডটি কার্যকর করতে পারেন
পুরো বালতি স্ক্যান করুন
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
আপনি যদি সুনির্দিষ্ট ফাইলগুলি সন্ধান করছেন, আসুন .jpg
চিত্রগুলি বলুন , আপনি নিম্নলিখিতগুলি করতে পারেন:
aws s3 ls s3://your_bucket | grep jpg | wc -l
জাভা ক্লায়েন্ট ব্যবহার করে আপনি এটি কীভাবে করতে পারেন তা নিম্নলিখিত is
<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;
}
}
উপরে পাইথন স্ক্রিপ্টের বোটো 3 সংস্করণটি এম্বেড করা হয়েছে।
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)`
aws s3 ls s3: // বালতি-নাম / ফোল্ডার-উপসর্গ-যদি-কোনও -রেকারসিভ | wc -l