Как я могу узнать, сколько объектов я сохранил в корзине S3? - PullRequest
111 голосов
/ 19 мая 2010

Если я что-то не упустил, похоже, что ни один из API, на которые я смотрел, не скажет вам, сколько объектов находится в корзине / папке S3 (префикс). Есть ли способ подсчитать?

Ответы [ 23 ]

200 голосов
/ 02 октября 2015

Использование AWS CLI

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

Примечание: приведенная выше команда cloudwatch, похоже, работает для некоторых, но не для других. Обсуждено здесь: https://forums.aws.amazon.com/thread.jspa?threadID=217050

Использование веб-консоли AWS

Вы можете посмотреть метрическую секцию cloudwatch , чтобы получить приблизительное количество сохраненных объектов. enter image description here

У меня есть приблизительно 50 миллионов продуктов, и для подсчета с использованием aws s3 ls

потребовалось более часа.
105 голосов
/ 24 августа 2016

Имеется переключатель --summarize, который включает в себя сводную информацию о корзине (то есть количество объектов, общий размер). Вот правильный ответ, используя AWS cli:

aws s3 ls s3://bucketName/path/ --recursive --summarize | grep "Total Objects:"

Total Objects: 194273

См. документацию

48 голосов
/ 25 декабря 2012

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

s3cmd ls -r s3://logs.mybucket/subfolder/ > listing.txt

Затем в linux вы можете запустить wc -l для файла, чтобы подсчитать количество строк (1 строка на объект).

wc -l listing.txt
47 голосов
/ 21 марта 2017

Хотя это старый вопрос, и обратная связь была получена в 2015 году, сейчас все намного проще, поскольку в веб-консоли S3 включена опция «Получить размер»:

enter image description here

Что обеспечивает следующее:

enter image description here

42 голосов
/ 02 октября 2015

Теперь есть простое решение с S3 API (доступно в AWS cli):

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[])]"
33 голосов
/ 04 февраля 2016

Вы можете использовать метрики облачных часов AWS для s3, чтобы увидеть точное количество для каждой корзины. cloudwatch metric when you select bucket

28 голосов
/ 20 мая 2010

Нет пути, если только вы

  1. перечислите их все в пакетах по 1000 (что может быть медленным и отнять пропускную способность - похоже, amazon никогда не сжимает ответы XML) или

  2. войдите в свою учетную запись на S3 и перейдите в раздел Учетная запись - Использование. Кажется, отдел биллинга точно знает, сколько объектов вы сохранили!

Простая загрузка списка всех ваших объектов на самом деле займет некоторое время и будет стоить денег, если у вас будет храниться 50 миллионов объектов.

Также см. эту ветку о StorageObjectCount - которая находится в данных об использовании.

S3 API, чтобы получить хотя бы основы, даже если бы это было часами, было бы здорово.

5 голосов
/ 17 июня 2015

Перейдите в раздел AWS Billing, затем отчеты, затем отчеты об использовании AWS.Выберите Amazon Simple Storage Service, затем «Операция StandardStorage».Затем вы можете загрузить CSV-файл, который содержит UsageType для StorageObjectCount, в котором указано количество элементов для каждого сегмента.

5 голосов
/ 25 февраля 2015

В s3cmd просто запустите следующую команду (в системе Ubuntu):

s3cmd ls -r s3://mybucket | wc -l
2 голосов
/ 19 мая 2010

API вернет список с шагом 1000. Проверьте свойство IsTruncated, чтобы увидеть, есть ли еще. Если есть, вам нужно сделать еще один вызов и передать последний ключ, который вы получили в качестве свойства Marker при следующем вызове. Затем вы продолжите цикл, пока IsTruncated не станет ложным.

См. Этот документ Amazon для получения дополнительной информации: Перебор многостраничных результатов

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