প্রশ্ন আমি কিভাবে একটি অ্যামাজন S3 বালতি আকার পেতে পারি?


আমি একটি অ্যামাজন S3 বালতি আকার (বাইট, এবং আইটেম #) গ্রাফ করতে চাই এবং তথ্য পেতে একটি কার্যকর উপায় খুঁজছি।

দ্য s3cmd সরঞ্জাম ব্যবহার করে মোট ফাইলের আকার পেতে একটি উপায় প্রদান s3cmd du s3://bucket_name, কিন্তু এটি দেখে মনে হচ্ছে যে এটি স্কেল করার ক্ষমতা সম্পর্কে যেহেতু এটি দেখে মনে হচ্ছে যে এটি প্রতিটি ফাইল সম্পর্কে তথ্য সংগ্রহ করে এবং নিজের সমষ্টি গণনা করে। যেহেতু অ্যামাজন জিবি-মাসগুলিতে ব্যবহারকারীদের চার্জ করে তাই এটি অসম্ভব বলে মনে হয় যে তারা এই মানটি সরাসরি প্রকাশ করে না।

যদিও আমাজন এর REST এপিআই একটি বালতি আইটেম সংখ্যা ফেরত, s3cmd এটা প্রকাশ করা বলে মনে হচ্ছে না। আমি কাজ করতে পারে s3cmd ls -r s3://bucket_name | wc -l কিন্তু যে একটি হ্যাক মত মনে হয়।

রুবি ডেস্কটপ AWS :: এস 3 লাইব্রেরি প্রতিশ্রুতিশীল লাগছিল, কিন্তু শুধুমাত্র বালতি আইটেম # মোট বালতি আকার উপলব্ধ করা হয়।

যে কেউ অন্য কমান্ড লাইন সরঞ্জাম বা লাইব্রেরি (পर्ल, পিএইচপি, পাইথন, অথবা রুবি পছন্দ) সম্পর্কে সচেতন? এই তথ্য পাওয়ার উপায়গুলি কী?


253
2017-11-15 00:40


উত্স


বালতি আকার বিশ্লেষণ করার জন্য আমি একটি টুল লিখেছিলাম: github.com/EverythingMe/ncdu-s3 - omribahumi
আমি বিস্মিত যে আমাজন স্পেসের জন্য চার্জ, কিন্তু S3 প্যানেলে কেবলমাত্র S3 বালতি দ্বারা নেওয়া মোট আকার সরবরাহ করবে না। - Luke
আমার জন্য নীচের উত্তরগুলির বেশিরভাগ বালতি আকার পুনরুদ্ধারের জন্য অনেক সময় লেগেছে, তবে এই পাইথন স্ক্রিপ্টটি বেশিরভাগ উত্তরগুলির চেয়ে দ্রুততর ছিল - slsmk.com/getting-the-size-of-an-s3-bucket-using-boto3-for-aws - Vaulstein


উত্তর:


AWS CLI এখন সমর্থন করে --query একটি প্যারামিটার যা লাগে JMESPath এক্সপ্রেশন।

এর অর্থ আপনি দ্বারা প্রদত্ত আকার মান যোগ করতে পারেন list-objects ব্যবহার sum(Contents[].Size) এবং মত গণনা length(Contents[])

এটি নীচের হিসাবে সরকারী AWS CLI ব্যবহার করে চালানো যেতে পারে এবং চালু করা হয় ফেব্রুয়ারী 2014

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

148
2017-11-16 23:00



বড় buckets (বড় # ফাইলস) জন্য, এটি হতাশাজনকভাবে ধীর। পাইথন ইউটিলিটি s4cmd "du" বাজ দ্রুত হয়: s4cmd du s3://bucket-name - Brent Faust
এটা অদ্ভুত. আপনার বালতি সামগ্রিক প্রোফাইল (অগভীর এবং চর্বি / গভীর এবং পাতলা) কি? এটা দেখতে অনেকটা s3cmd একই ওভারহেড থাকা উচিত AWS CLI। মধ্যে কোড এটা দেখায়  s3cmd একটি বালতি প্রতিটি ডিরেক্টরি জন্য একটি অনুরোধ করুন। - Christopher Hackett
মানুষের পঠনযোগ্য বিন্যাসে এটি পেতে: aws s3api --profile PROFILE_NAME list-objects --bucket BUCKET_NAME --output json --query "[sum(Contents[].Size), length(Contents[])]" | awk 'NR!=2 {print $0;next} NR==2 {print $0/1024/1024/1024" GB"}' - Sandeep
এখন অ্যাডব্লিউএস ক্লাউডওয়াচ একটি "বালিটসাইটবাইট" প্রতি-বালতি মেট্রিক অফার করে যা এখন আর সঠিক সমাধান নয়। নীচে Toukakoukan এর উত্তর দেখুন। - cce
s4cmd du চমৎকার, ধন্যবাদ @ ব্রেন্ট Faust! ছোট নোট (যারা সংশ্লিষ্ট জন্য) আপনি যোগ করতে হবে -r পাশাপাশি উপ-ডিরেক্টরি মাপ পেতে। - Greg Sadetsky


এটি এখন অফিসিয়াল এডব্লিউএস কমান্ড লাইন ক্লায়েন্টের সাথে সহজেই করা যেতে পারে:

aws s3 ls --summarize --human-readable --recursive s3://bucket-name/

অফিসিয়াল ডকুমেন্টেশন

আপনি যদি সম্পূর্ণ বালতি গণনা করতে না চান তবে এটি উপসর্গগুলি গ্রহণ করে:

aws s3 ls --summarize --human-readable --recursive s3://bucket-name/directory

257
2017-09-09 14:04



এটি সেরা এবং আপ টু ডেট উত্তর - Tim
একমত, এই সেরা উত্তর। - Luis Artola
এটি অনেকগুলি ফাইলের সাথে বালতিগুলির জন্য খুব ধীর, কারণ এটি মূলত সারাংশে সমস্ত বস্তুর তালিকাটি দেখানোর আগে বালতিতে তালিকাবদ্ধ করে এবং এটিতে @ ক্রিশটোফার হ্যাক্টের উত্তরের তুলনায় এটি উল্লেখযোগ্যভাবে দ্রুত নয় - এটি ছাড়া আর একটি শব্দ নেই। - Guss
বিলম্বিততা উন্নত করতে একই বালতি অঞ্চলের সাথে একটি EC2 ইনস্ট্যান্স চালান - juanmirocks
আপনি যদি কেবল সংক্ষিপ্ত আকারে আগ্রহী হন তবে এটি দ্রুততম এবং আপ টু ডেট সমাধান এবং আপনি কেবল সেই মান খুঁজে পেতে লেইলের মাধ্যমে পাইপ করতে পারেন। - Charlie Hileman


AWS কনসোল:

হিসাবে ২8 জুলাই ২015 আপনি এই তথ্য পেতে পারেন ক্লাউডওয়াচ এর মাধ্যমে। যদি আপনি একটি GUI চান, যান ক্লাউডওয়াচ কনসোল: (অঞ্চল নির্বাচন করুন>) ম্যাট্রিক্স> S3

AWS CLI কমান্ড:

এখানে পোস্ট করা অন্যান্য কমান্ডের তুলনায় এটি অনেক দ্রুত, কারণ এটি সমষ্টি গণনা করার জন্য প্রতিটি ফাইলের আকার পৃথকভাবে জিজ্ঞাস্য করে না।

 aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2015-07-15T10:00:00 --end-time 2015-07-31T01:00:00 --period 86400 --statistics Average --region eu-west-1 --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=toukakoukan.com Name=StorageType,Value=StandardStorage

গুরুত্বপূর্ণ: আপনি ধাপে যুক্তি উভয় সংগ্রহস্থল টাইপ এবং bucketName উল্লেখ করতে হবে অন্যথায় আপনি কোন ফলাফল পাবেন। আপনি পরিবর্তন করতে হবে সব --start-date, --end-time, এবং Value=toukakoukan.com


এখানে একটি ব্যাশ স্ক্রিপ্ট যা আপনি উল্লেখ করতে এড়াতে ব্যবহার করতে পারেন --start-date এবং --end-time ম্যানুয়ালি।

#!/bin/bash
bucket=$1
region=$2
now=$(date +%s)
aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time "$(echo "$now - 86400" | bc)" --end-time "$now" --period 86400 --statistics Average --region $region --metric-name BucketSizeBytes --dimensions Name=BucketName,Value="$bucket" Name=StorageType,Value=StandardStorage

106
2017-07-31 21:58



অথবা মধ্যে ক্লাউডওয়াচ কনসোল: (অঞ্চল নির্বাচন করুন>) ম্যাট্রিক্স> S3 - Halil Özgür
এই পর্যন্ত সবচেয়ে সহজ এবং দ্রুততম সমাধান। দুর্ভাগ্যবশত উত্তর এখনও চতুর্থ স্থানে এখনও। - luk2302
এটি 10 ​​মিলিয়ন + বস্তুর সাথে আমার বালতি জন্য কাজ করে। কিন্তু বাশ স্ক্রিপ্ট কিছু ফেরত দেয়নি, জিওআইতে যেতে হয়েছিল)। - Petah
এটি উল্লেখ করা উচিত যে আপনাকেও সেই অঞ্চলে পরিবর্তন করতে হবে - majikman
2018 হতে পারে: স্ক্রিপ্ট ত্রুটি Invalid value ('1525354418') for param timestamp:StartTime of type timestamp - anneb


s3cmd এটা করতে পারেন:

s3cmd du s3://bucket-name


103
2017-07-08 13:40



ধন্যবাদ। এখানে কিছু সময় আছে। প্রায় 33 গিগাবাইট অজ্ঞাত তথ্য ব্যবহার করে প্রায় 10 মিলিয়ন ফাইল সহ একটি s3ql deduplicated ফাইল সিস্টেমে একটি বালতিতে, এবং প্রায় 93000 s3 বস্তুগুলি, s3cmd du এই উত্তরটি গণনা করতে প্রায় 4 মিনিট সময় নেয়। আমি এখানে অন্যত্র বর্ণিত php মত অন্য পন্থা সঙ্গে তুলনা কিভাবে জানতে আগ্রহী। - nealmcb
এটা ধীর কারণ S3 ListObjects API কল 1000 বস্তুর পৃষ্ঠায় বস্তু ফেরত। হিসাবে আমি / হে অনেক সীমিত ফ্যাক্টর দ্বারা মনে করি যে কোনও সমাধান 93000 বস্তুর তুলনায় অপেক্ষাকৃত ধীর হবে। - David Snabel-Caunt
s4cmd দ্রুত ফলাফল গণনা করার জন্য S3 এর API এ অনুরোধগুলিকে মাল্টি-থ্রেড করার অতিরিক্ত সুবিধা সহ একই জিনিসও করতে পারে। এই টুলটি সম্প্রতি আপডেট করা হয়নি, তবে ইন্টারনেট পাসার-এর দ্বারা এটি কার্যকর হতে পারে। - Nick Chammas
s4cmd শুধু আমার জন্য 0 ফেরত, এবং আয় BotoClientError: Bucket names cannot contain upper-case characters when using either the sub-domain or virtual hosting calling format. বড় হাতের অক্ষর সঙ্গে buckets জন্য। - Lakitu


যদি আপনি একটি ডাউনলোড করুন ব্যবহারের রিপোর্ট, আপনি দৈনিক মান গ্রাফ করতে পারেন TimedStorage-ByteHrs ক্ষেত্র।

আপনি যদি জিবিবিতে সেই নম্বরটি চান তবে শুধু ভাগ করে নিন 1024 * 1024 * 1024 * 24 (এটি 24 ঘণ্টার চক্রের জন্য জিআইবি-ঘন্টা)। আপনি যদি বাইটের সংখ্যা চান তবে কেবল 24 দ্বারা বিভক্ত করুন এবং গ্রাফ করুন।


22
2017-12-05 17:22





সরকারী AWS s3 কমান্ড লাইন সরঞ্জাম ব্যবহার করে:

aws s3 ls s3://bucket/folder --recursive | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'

18
2018-04-23 11:22



Amazon আসলে এই দয়া করে যেখানে লিঙ্ক লিঙ্ক প্রদান করুন। আমি এটা খুঁজে পাচ্ছি না। - lobi
docs.aws.amazon.com/cli/latest/index.html - dyltini
docs.aws.amazon.com/cli/latest/reference/s3/ls.html একটি ভাল লিঙ্ক - Ian Bamforth
এই উত্তর আমার জন্য শ্রেষ্ঠ এবং দ্রুত কাজ। - Miro
সেরা এবং দ্রুততম উত্তর! - PlagTag


s4cmd আমি খুঁজে পাওয়া সবচেয়ে দ্রুততম উপায় (পাইথনটিতে লেখা একটি কমান্ড-লাইন ইউটিলিটি):

pip install s4cmd

একাধিক থ্রেড ব্যবহার করে এখন পুরো বালতি আকার গণনা করতে:

s4cmd du -r s3://bucket-name

10
2018-03-31 22:12



না, s4cmd du s3://123123drink সহজভাবে বালতি আকার ফিরে না। বালতি আকার পেতে আপনি recursive যোগ করুন -r, এই মত: s4cmd du -r s3: // 123123drink - George Chalhoub
হ্যাঁ, ভালো বিন্দু @ বুক্লাউ (যোগ করা হয়েছে -r মানুষ S3 এ সিমুলেটেড ফোল্ডার ব্যবহার করা হয় যখন বিভ্রান্তি এড়াতে উপরে উদাহরণস্বরূপ)। - Brent Faust