সমস্ত AWS S3 বালতি দেখুন এবং ব্যবহৃত প্রতিটি বালতি স্টোরেজ তালিকাবদ্ধ করুন


11

আমার একাধিক এডাব্লুএস অ্যাকাউন্ট রয়েছে এবং আমার অ্যাকাউন্টে প্রতিটি এস 3 বালতি তালিকাবদ্ধ করতে হবে এবং তারপরে প্রতিটি বালতি মোট আকার দেখতে হবে।

বর্তমানে, আমি কেবলমাত্র একক S3 বালতির স্টোরেজ আকারটি দেখতে পাচ্ছি :

aws s3 ls s3://mybucket --recursive --human-readable --summarize

এস 3 সিলেক্ট প্রকাশিত হয়েছিল কিছুদিন আগে পুনরায়: 2017 এর উদ্ভাবন করুন twitch.tv/videos/206752912
অ্যাডেননর TOUMI

আপনি একই কোডটি
jimmy978654321

উত্তর:


11

রেজোলিউশন ঘ

সুতরাং আমি নিম্নলিখিত স্ক্রিপ্ট দিয়ে এটি সমাধান। আমি প্রাথমিকভাবে প্রশ্নটি পোস্ট করেছিলাম এমন কোনও সহজ উপায় যেখানে আমি অবগত ছিলাম না।

#!/bin/bash
aws_profile=('profile1' 'profile2' 'profile3');

#loop AWS profiles
for i in "${aws_profile[@]}"; do
  echo "${i}"
  buckets=($(aws --profile "${i}" --region your_region s3 ls s3:// --recursive | awk '{print $3}'))

  #loop S3 buckets
  for j in "${buckets[@]}"; do
  echo "${j}"
  aws --profile "${i}" --region your_region s3 ls s3://"${j}" --recursive --human-readable --summarize | awk END'{print}'
  done

done

রেজোলিউশন 2

ব্যবহার ড্যাশবোর্ডের মধ্যে CloudWatch ডেস্কটপ AWS কনসোলে।

তারপরে আপনি কেবলমাত্র সমস্ত এস 3 বালতি নির্দিষ্ট করতে পারেন এবং স্টোরেজ আকারের মেট্রিক্সগুলি দেখানোর জন্য সংখ্যাগুলির পরিসংখ্যান যুক্ত করতে পারেন।

এটি আপনার প্রচুর এপিআই কলগুলি ব্যয় করবে না এবং এস 3 বালতির আকারের উপর নির্ভর করে দ্রুততর হতে পারে (খুব বড় বালতিতে আকার পেতে বেশ খানিকটা সময় নেয়)।

রায়

প্রতিটি এডাব্লুএস অ্যাকাউন্টে ড্যাশবোর্ড ( রেজোলিউশন 2 ) তৈরি করা আমার পক্ষে সবচেয়ে কার্যকর বিকল্প ছিল কারণ আমার পক্ষে প্রতিটি এডাব্লুএস অ্যাকাউন্ট থেকে ম্যানুয়ালি ম্যাট্রিকগুলি লগ ইন করা এবং স্ক্রিপ্টগুলির এপিআই কলগুলি অপেক্ষা করার অপেক্ষা রাখে না। :(


কেন | awk END'{print}'?
তেনসিবাই

1
পুনরাবৃত্তির বিকল্পটি ব্যবহার করে প্রতিটি ফোল্ডার এবং ফাইলের আকার দেখায় এবং আমার কেবল বালতির মোট আকারের আউটপুট প্রয়োজন।
কাইল স্টেনক্যাম্প

যেকোন কিছু প্রদর্শনের জন্য আপনাকে ড্যাশবোর্ডের জন্য একটি '1 দিন' বা তার বেশি সময় নির্বাচন করতে হবে
জেরেমি লিপজিগ

2
সাবধান থাকুন যে রেজোলিউশন 2-এ প্রস্তাবিত সমাধানটি আপনার ক্লাউডওয়াচের দাম বাড়ায় যেহেতু ড্যাশবোর্ডের প্রতি মুহুর্তে প্রতিটির $ 3 ডলার রয়েছে। aws.amazon.com/cloudwatch/pricing/?nc1=h_ls
ড্রুবিও

কি [@]মধ্যে "${buckets[@]}"অর্থ কি?
জো

3

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

  1. আপনার org এর সমস্ত অ্যাকাউন্টের তালিকা তৈরি এবং পার্স করুন।

    aws organizations list-accounts
    
  2. প্রতিটি অ্যাকাউন্টের জন্য তালিকা এবং বাকেট সব পার্স।

    aws s3api list-buckets --query "Buckets[].Name"
    
  3. অবশেষে, প্রতিটি অ্যাকাউন্টের মধ্যে প্রতিটি বালতির আকার পান। আপনি আগে যেমন একই ক্লাইম কমান্ড ব্যবহার করতে পারেন তবে সতর্কতা অবলম্বন করা উচিত যে আপনি বালতির মধ্যে প্রতিটি আইটেমের স্বতন্ত্র আকারের তালিকা তৈরি করতে যাচ্ছেন। বালতি আকার পেতে আপনি এই ক্লাইম কমান্ডটি ব্যবহার করতে পারেন।

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

1
1. এডাব্লুএস অ্যাকাউন্টের প্রোফাইল তথ্য তালিকাভুক্ত করে না। আমার এই কনফিগারেশন ফাইলটি যেখানে এই তথ্যটি সংরক্ষণ করা হয়েছে তা থেকে পুনরায় পুনর্বিবেচনা করার সময় আমার ছিল না তাই আমি নীচে পোস্ট করা স্ক্রিপ্টের মানগুলি হার্ডকোড করেছি
কাইল স্টেনক্যাম্প

2

আপনাকে এটির জন্য একটি স্ক্রিপ্ট লিখতে হবে যদি না এটি না করার কোনও সরঞ্জাম না থাকে যা আমি পাই না।

আপনি যদি একাধিক আওস অ্যাকাউন্টের সাথে কাজ করছেন তবে আপনাকে বালতি আকার নিতে অ্যাকাউন্টগুলির মধ্যে স্যুইচ করতে হবে।

সমস্ত বালতি এবং তাদের মোট আকার পেতে আপনি ' আউস এস 3 এপি ' ব্যবহার করতে পারেন । list-bucketsআপনি ব্যবহার করে সমস্ত বালতি একটি অ্যাকাউন্টে পেতে পারেন এবং তারপরে আপনি তাদের আকারগুলি তালিকাবদ্ধ করতে এবং পরবর্তী অ্যাকাউন্টটি চেষ্টা করতে সক্ষম হবেন।


1
এটি করার জন্য আমি বোটো 3 সহ পাইথনের স্ক্রিপ্ট লিখেছিলাম: gist.github.com/rwiggins/b945b5ec1693c1d473a814915adcee8c (দ্রষ্টব্য: বালতি আকারগুলি টানতে দক্ষতার সাথে / বালতিতে সমস্ত বস্তুর আকারের সংক্ষেপণ ছাড়াই ব্যবহার করতে হবে)
রিড করুন

1

সংস্করণ চালু করা থাকলে এবং প্রচুর পরিমাণে ডেটা "মুছে ফেলা হয়েছে" তবে এগুলির কোনওটিই বালতির আকার দেখায় না। এস 3 জিইউআই কনসোলে, মেট্রিক্স ট্যাবটি আপনাকে কী জন্য বিল দেওয়া হচ্ছে তা দেখায়।

একটি স্ক্রিপ্ট থেকে বের নিম্নলিখিত কমান্ড স্ক্র্যাপযুক্ত পাওয়া /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket । এটি উইন্ডোজে ভাল কাজ করে। বিকল্প yourregionএবং yourbucketname:

aws cloudwatch get-metric-statistics --namespace AWS/S3 --start-time 2019-05-09T00:01:00Z --end-time 2019-05-11T23:59:00Z --period 86400 --statistics Average --region yourregion --metric-name BucketSizeBytes --dimensions Name=BucketName,Value=yourbucketname Name=StorageType,Value=StandardStorage

এটি শুরু এবং শেষ সময়ের সাথে আবদ্ধ সময়ের মধ্যে বাইটগুলিতে গড় আকার দেয়। ফলটি আপনাকে চমকে দিতে পারে যদি আপনার বালতিতে ভার্শনিং সক্ষম (সক্রিয়) থাকে এবং আপনি মনে করেন যে আপনি প্রচুর পরিমাণে ডেটা "মুছে ফেলেছেন"।

সংস্করণ-সক্ষম বালতিগুলি পরিষ্কার করতে, আপনাকে অবশ্যই লাইফ সাইকেল বিধি সেট করতে হবে। আপনি পূর্ববর্তী সংস্করণগুলি স্থায়ীভাবে মুছতে বেছে নিতে পারেন। রূপান্তর পদক্ষেপে আপনি চেকবক্সগুলি বাদ দিতে পারেন।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.