it-swarm.com.ru

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

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

94
fields

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

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

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

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

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

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

27
Tom Andersen

Использование 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 потребовалось более часа, чтобы рассчитать

181
Mayank Jaiswal

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

Вот правильный ответ, используя AWS cli:

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

Total Objects: 194273

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

93
advncd

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

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

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

wc -l listing.txt
48
Jim Murphy

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

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[])]"
41
Raphael

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

 enter image description here

Который обеспечивает следующее:

 enter image description here

38
gvasquez

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

31
mastaBlasta

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

s3cmd ls -r s3://mybucket | wc -l
6
mjsa

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

5
Kenan

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

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

2
BigJoe714

Старая тема, но все еще актуальна, так как я искал ответ, пока я только не понял это. Я хотел, чтобы количество файлов с помощью инструмента на основе графического интерфейса (то есть без кода). Я уже использую инструмент под названием 3Hub для перетаскивания в S3. Я хотел знать, сколько файлов у меня было в определенном сегменте (я не думаю, что биллинг разбивает его по сегментам). 

So, using 3Hub, 
- list the contents of the bucket (looks basically like a Finder or Explorer window)
- go to the bottom of the list, click 'show all'
- select all (ctrl+a)
- choose copy URLs from right-click menu
- paste the list into a text file (I use TextWrangler for Mac) 
- look at the line count  

У меня было 20521 файлов в корзине и подсчет файлов менее чем за минуту.

2
Darby

Ни один из API не даст вам счет, потому что на самом деле не существует специального API для Amazon, чтобы сделать это. Вы просто должны запустить список содержимого и подсчитать количество результатов, которые возвращаются.

1
Mitch Dempsey

Я использовал скрипт Python из scalablelogic.com (добавив в журнал учета). Работал отлично.

#!/usr/local/bin/python

import sys

from boto.s3.connection import S3Connection

s3bucket = S3Connection().get_bucket(sys.argv[1])
size = 0
totalCount = 0

for key in s3bucket.list():
    totalCount += 1
    size += key.size

print 'total size:'
print "%.3f GB" % (size*1.0/1024/1024/1024)
print 'total count:'
print totalCount
1
Tayler

Если вы используете AWS CLI в Windows, вы можете использовать Measure-Object из PowerShell, чтобы получить общее количество файлов, как wc -l в * nix.

PS C:\> aws s3 ls s3://mybucket/ --recursive | Measure-Object

Count    : 25
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

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

0
pdm

Вы можете скачать и установить браузер s3 с http://s3browser.com/ . Когда вы выбираете корзину в центральном правом углу, вы можете увидеть количество файлов в корзине. Но размер, который он показывает, неверен в текущей версии. 

Gubs

0
gubs

Я обнаружил, что браузер S3 очень удобен, он предоставляет файлы и папки и общее количество, а также размер для любой папки рекурсивно

Ссылка для скачивания: https://s3browser.com/download.aspx

0
Vishal Zanzrukia

3Hub прекращено. Есть лучшее решение, вы можете использовать Transmit (только для Mac), тогда вы просто подключаетесь к своей корзине и выбираете Show Item Count из меню View

0
arielcr

Это также можно сделать с помощью gsutil du (Да, инструмент Google Cloud)

gsutil du s3://mybucket/ | wc -l
0
Ghilas BELHADJ

Как насчет аналитики класса хранилища S3 - Вы получаете API, а также на консоли - https://docs.aws.Amazon.com/AmazonS3/latest/dev/analytics-storage-class.html

0
Prabhat

Из командной строки в AWS CLI используйте ls plus --summarize. Это даст вам список всех ваших предметов и общее количество документов в конкретном ведре. Я не пробовал это с ведрами, содержащими вложенные ведра:

aws s3 ls "s3://MyBucket" --summarize

Это займет немного времени (заняло перечисление моих 16+ K документов за 4 минуты), но это быстрее, чем подсчет 1K за раз.

0
Ricardo

Самый простой способ - использовать консоль разработчика, например, если вы используете Chrome, выберите «Инструменты разработчика», и вы увидите следующее, вы можете либо найти и сосчитать, либо сделать какое-то совпадение, например 280-279 + 1 = 2

... 

0
zeroc00l