AWS S3: як я бачу, скільки дискового простору використовується


113

У мене є акаунт AWS. Я використовую S3 для зберігання резервних копій з різних серверів. Питання, чи є в консолі AWS інформація про те, скільки дискового простору використовується в моїй хмарі S3?


1
Ви повинні отримати всі об'єкти, а потім підбити підсумки всіх розмірів файлів. Ви не можете зробити це за одну операцію.
Layke

Дивно, що реального вирішення цієї проблеми немає. Перегляд усіх предметів та обчислення не є рішенням, якщо у вас є 10 мільйонів файлів! У користувальницькому інтерфейсі s3 AWS ви можете легко побачити використання в розділі Управління -> Метрики. Чому немає способу отримати це з командного рядка?
Саранг

Відповіді:


117

Yippe - оновлення AWS CLI дозволяє вам рекурсивно проводити через відра ...

aws s3 ls s3://<bucketname> --recursive  | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'

print total / 1024/1024/1024 * .03 дає хорошу оцінку використання $, якщо ви менше 1 ТБ. @cudds awesomeness - спасибі тонна !!!
chrislovecnm

4
Вам не потрібна частина грепу, якщо ви маєте одне відро.
jpbochi

7
Тепер AWS Cloudwatch має показник щодо розміру відра та кількості об'єктів, який оновлюється щодня. Про час! aws.amazon.com/blogs/aws/…
cudds

3
Приклад 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 Важливо: Ви повинні вказати і StorageType, і BucketName в аргументі розмірів, інакше ви не отримаєте результатів.
Сем Мартін,

@SamMartin яким повинен бути StorageType? Також ця відповідь потребує дуже довгого часу, щоб обчислити відра
величиною

104

Я не впевнений, коли це було додано до AWSCLI, враховуючи, що початкове запитання було 3 роки тому, але інструмент командного рядка дає хороший підсумок, запустивши:

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

4
Ваші та Крістофер - це найкращі відповіді.
Майкл Алерс

2
Набагато простіше рішення, ніж прийнята відповідь. Дякую!
Адріан Макнейл

1
це не показує справжній розмір для версій. Чи є спосіб перевірити загальний розмір відра s3 за всіма версіями?
Шаніка Едірівеера

1
Роздрукуйте загальний розмір кожного з ваших відра:for b in $(aws s3 ls | awk '{ print $NF }'); do printf "$b "; aws s3 ls s3://$b --recursive --human-readable --summarize | tail -1; done
Метт Уайт

69

Щоб дізнатися розмір відра S3 за допомогою консолі AWS:

  1. Клацніть ім’я відра S3
  2. Виберіть вкладку "Управління"
  3. Натисніть кнопку навігації "Метрики"
  4. За замовчуванням ви повинні побачити метрику зберігання відра

Сподіваюся, це допомагає.


3
Це працює швидше, якщо у вашому відрі є ТБ даних. Прийняті відповіді потребують багато часу для обчислення всіх об'єктів у цій шкалі.
сокра

Зауважте також, що це дозволить зафіксувати висячі неповні завантаження, а lsрішення на базі - не.
Девід

найшвидший спосіб зробити це ця відповідь
Мохаммед Зекралла

36

s3cmd може показати вам це, запустивши s3cmd du, необов'язково передаючи ім'я відра як аргумент.


1
FYI - Я спробував це, і Aws cli версія у cudds відповідає. Вони обидва працюють нормально, але s3cmd був значно повільнішим у тих випадках, коли я намагався випустити 1.5.0-rc1.
DougW

@DougW: Спасибі, корисна інформація. AWS CLI 1.0.0 був випущений у вересні 2013 року , тому він не існував на момент написання своєї відповіді.
Маркуск

s3cmd не підтримує хешування AWS4, тому він не працюватиме з будь-якими новими регіонами, включаючи регіон ЄС "eu-central-1"
Koen.

@Koen.: Спасибі, я про це не знав. Здається, що сервіс s3cmd шукає додавання підтримки для AWS4: github.com/s3tools/s3cmd/isissue/402
markusk

@Koen .: s3cmd тепер підтримує хешування AWS4 станом на 1.5.0, який вийшов 2015-01-12. Дивіться s3tools.org/news .
Маркуск

28

Тепер AWS CLI підтримує --queryпараметр, який приймає JMESPath вирази .

Це означає, що ви можете підсумовувати значення розміру, list-objectsвикористовуючи sum(Contents[].Size)та рахуючи подібніlength(Contents[]) .

Це можна виконати за допомогою офіційного CLI AWS, як показано нижче, і було представлено у лютому 2014 року

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

Мені довелося використовувати подвійні лапки навколо рядка запиту в командному рядку Windows. Хоча працює як чемпіон.
Травіс Сталь

Остерігайтеся: якщо відро порожнє, команда не буде мати наступну помилку: In function sum(), invalid type for value: None, expected one of: ['array-number'], received: "null" інакше запит працює чудово!
mechatroner

7

У вікні linux, у якому є pythonpipінсталятором), grepі awkвстановіть AWS CLI (інструменти командного рядка для EC2, S3 та багатьох інших служб)

sudo pip install awscli

потім створіть .awssecretфайл у своїй домашній папці із вмістом, як показано нижче (коригуйте ключ, секрет та регіон за потребою):

[default]
aws_access_key_id=<YOUR_KEY_HERE>
aws_secret_access_key=<YOUR_SECRET_KEY_HERE>
region=<AWS_REGION>

Зробіть цей файл читанням-записом лише для свого користувача:

sudo chmod 600 .awssecret

та експортувати його у ваше оточення

 export AWS_CONFIG_FILE=/home/<your_name>/.awssecret

потім запустіть у терміналі (це команда з одного рядка, відокремлена \для легкого читання тут):

aws s3 ls s3://<bucket_name>/foo/bar | \
grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | \
awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
  • awsчастина перераховує відро (або , опціонально, «підпапку»)
  • в grepчастині видаляється ( з використанням-v ) лінії , які відповідають регулярному виразу ( з допомогою -E). ^$для порожнього рядка, --це для розділових ліній на виходіaws s3 ls
  • останній awk просто додайте до total3-ї стовпчика отриманого результату (розмір у КБ), а потім відображайте його в кінці

ПРИМІТКА. Ця команда працює для поточного відра або "папки", а не рекурсивно


7

Хмарний годинник також дозволяє створювати показники для вашого відра S3. Він показує показники за розміром та кількістю об'єктів. Послуги> Інструменти управління> Хмарний годинник. Виберіть область, де знаходиться ваше відро S3, і серед цих доступних показників буде показник розміру та кількості об'єктів.


6

Дивіться /server/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket

Відповів Вік ...

<?php
if (!class_exists('S3')) require_once 'S3.php';

// Instantiate the class
$s3 = new S3('accessKeyId', 'secretAccessKey');
S3::$useSSL = false;

// List your buckets:
echo "S3::listBuckets(): ";
echo '<pre>' . print_r($s3->listBuckets(), 1). '</pre>';

$totalSize = 0;
$objects = $s3->getBucket('name-of-your-bucket');
foreach ($objects as $name => $val) {
    // If you want to get the size of a particular directory, you can do
    // only that.
    // if (strpos($name, 'directory/sub-directory') !== false)
    $totalSize += $val['size'];
}

echo ($totalSize / 1024 / 1024 / 1024) . ' GB';
?>

Чи знаєте ви, чи гігабайт у цьому випадку становить 1024 3 чи 1000 3? Мені важко знайти остаточне твердження S3.
dfrankow

@dfrankow Рядок echo ($totalSize / 1024 / 1024 / 1024) . ' GB';знаходиться внизу вихідного коду.
MJD

@MJD Я не пам'ятаю, про що тут була моя думка. Він запитував або про використання s3cmd або S3 слова "гігабайт", а не цього PHP-коду.
dfrankow

5

Окрім відповіді Крістофера.

Якщо вам потрібно підраховувати загальний розмір використання відра, виконайте такі дії:

aws s3api list-object-versions --bucket BUCKETNAME --output json --query "[sum(Versions[].Size)]"

Він нараховує як останню, так і заархівовану версії.



1

Консоль AWS звичайно не показує це, але ви можете використовувати Провідник Bucket або Cloudberry Explorer щоб отримати загальний розмір відра. В обох доступні безкоштовні версії.

Примітка. Ці продукти все ж повинні набирати розмір кожного окремого об'єкта, тому для відра з великою кількістю предметів може знадобитися багато часу.


Я бачу лише пробне програмне забезпечення. Цю пропозицію видалено?
Trefex

1

На основі відповіді @ cudds:

function s3size()
{
    for path in $*; do
        size=$(aws s3 ls "s3://$path" --recursive | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{printf "%.2fGb\n", (total/1024/1024/1024)}')
        echo "[s3://$path]=[$size]"
    done
}

...

$ s3size bucket-a bucket-b/dir
[s3://bucket-a]=[24.04Gb]
[s3://bucket-b/dir]=[26.69Gb]

Також Cyberduck зручно дозволяє обчислити розмір відра або папки.



1

Це давнє запитання, але оскільки я шукав відповідь, я наткнувся на нього. Деякі відповіді змусили мене запам'ятати, що я використовую браузер S3 для управління даними. Ви можете натиснути на відро і вразити властивості, і воно показує вам загальну суму. Досить просто. Я дуже рекомендую веб-переглядач: https://s3browser.com/default.aspx?v=6-1-1&fam=x64


0

Що ж, ви можете це зробити і через клієнт S3, якщо ви віддаєте перевагу зручному інтерфейсу користувача.

Я використовую CrossFTP , який є вільним і кросплатформенним, і там ви можете клацнути правою кнопкою миші на папці папок -> вибрати "Властивості ..." -> натиснути кнопку "Обчислити" поруч із Розміром і вуаля.


0

s3admin - це додаток із відкритим кодом (UI), який дозволяє переглядати відра, обчислювати загальний розмір, показувати найбільші / найменші файли. Він розроблений для швидкого огляду ваших відра та їх використання.


0

Ви запитували: інформація в консолі AWS про те, скільки місця на диску використовується моя хмара S3 ?

Я перейду на панель приладів і перевіряю використання S3 у поточному рахунку .

Вони дають вам інформацію - MTD - в Gb до 6 знаків після коми, IOW, до рівня Kb.

Він розбивається на регіони, але додавати їх (якщо використовувати декілька регіонів) досить просто.

BTW: Вам можуть знадобитися спеціальні дозволи IAM для отримання інформації про виставлення рахунків.


-2

Я використовую хмарну черепаху для отримання розміру окремих відра. Якщо розмір відра перевищує> 100 Gb, то для відображення розміру знадобиться певний час. Хмарна черепаха безкоштовна.


8
Будьте обережні з цим програмним забезпеченням. Він встановлює додаткові хромовані розширення і, здається, досить спам.
стикс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.