AWS S3: как узнать, сколько дискового пространства используется - PullRequest
92 голосов
/ 23 января 2012

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

Ответы [ 17 ]

95 голосов
/ 27 января 2014

Yippe - обновление интерфейса командной строки AWS позволяет рекурсивно просматривать ls через сегменты ...

aws s3 ls s3://<bucketname> --recursive  | grep -v -E "(Bucket: |Prefix: |LastWriteTime|^$|--)" | awk 'BEGIN {total=0}{total+=$3}END{print total/1024/1024" MB"}'
75 голосов
/ 27 августа 2015

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

aws s3 ls s3://mybucket --recursive --human-readable --summarize
36 голосов
/ 16 мая 2013

s3cmd может показать это, запустив s3cmd du, при желании передавая имя сегмента в качестве аргумента.

36 голосов
/ 02 мая 2017

Чтобы узнать размер корзины S3 с помощью консоли AWS:

  1. Щелкните название корзины S3
  2. Выберите вкладку «Управление»
  3. Нажмите кнопку навигации «Метрики»
  4. По умолчанию вы должны увидеть метрику хранилища корзины

Надеюсь, это поможет.

25 голосов
/ 17 ноября 2014

CLI AWS теперь поддерживает параметр --query, который принимает выражения JMESPath .

Это означает, что вы можете суммировать значения размера, заданные list-objects, используя sum(Contents[].Size), и считать как length(Contents[]).

Это может быть выполнено с использованием официального интерфейса командной строки AWS, как показано ниже.введено в февраль 2014

 aws s3api list-objects --bucket BUCKETNAME --output json --query "[sum(Contents[].Size), length(Contents[])]"
7 голосов
/ 05 ноября 2013

На linux box с python (с установщиком pip), 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 просто добавьте к total 3-й столбец результирующего вывода (размер в КБ), затем отобразите его в конце

ПРИМЕЧАНИЕ эта команда работает для текущего сегмента или «папки», а не рекурсивно

6 голосов
/ 23 сентября 2015

Облачные часы также позволяют создавать метрики для вашей корзины S3. Он показывает вам метрики по размеру и количеству объектов. Услуги> Инструменты управления> Cloud watch. Выберите регион, в котором находится ваш сегмент S3, и показатели размера и количества объектов будут среди этих доступных показателей.

6 голосов
/ 24 января 2012

См. https://serverfault.com/questions/84815/how-can-i-get-the-size-of-an-amazon-s3-bucket

Ответил Вик ...

<code><?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). '
'; $ totalSize = 0; $ objects = $ s3-> getBucket ('name-of-your-bucket'); foreach ($ objects as $ name => $ val) { // Если вы хотите получить размер определенного каталога, вы можете сделать // только это. // if (strpos ($ name, 'directory / sub-directory')! == false) $ totalSize + = $ val ['size']; } echo ($ totalSize / 1024/1024/1024). «ГБ»; ?>
5 голосов
/ 29 апреля 2015

Получение больших сегментов * размер 1002 * через API (либо aws cli, либо s4cmd) довольно медленное.Вот мой Как объяснить, как анализировать отчет об использовании S3 с использованием bash one liner:

cat report.csv | awk -F, '{printf "%.2f GB %s %s \n", $7/(1024**3 )/24, $4, $2}' | sort -n
4 голосов
/ 18 февраля 2015

В дополнение к ответу Кристофера.

Если вам нужно подсчитать общий размер версионного буфера, используйте:

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

Считает последнюю и архивную версии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...