сколько объектов возвращает список объектов aws s3api?

linux amazon-web-services amazon-s3

770 просмотра

2 ответа

Я использую:

aws s3api list-objects --endpoint-url https://my.end.point/ --bucket my.bucket.name --query 'Contents[].Key' --output text

чтобы получить список файлов в ведре.

На aws s3api list-object странице документации написано, что эта команда возвращает только до 1000 объектов, однако я заметил, что в моем случае она возвращает имена всех файлов в моей корзине. Например, когда я запускаю следующую команду:

aws s3api list-objects --endpoint-url https://my.end.point/ --bucket my.bucket.name --query 'Contents[].Key' --output text | tr "\t" "\n" | wc -l

Я получаю 13512, что означает, что было возвращено более 13 тысяч имен файлов.

Я скучаю по чему-то?

Я использую следующую версию aws cli:

aws-cli/1.10.57 Python/2.7.3 Linux/3.2.0-4-amd64 botocore/1.4.47
Автор: Rustam Issabekov Источник Размещён: 08.11.2019 11:18

Ответы (2)


4 плюса

Возвращает некоторые или все (до 1000) объектов в ведре. Вы можете использовать параметры запроса в качестве критерия выбора для возврата подмножества объектов в сегменте. [1]

Я думаю, что часть "(до 1000)" в описании документации вводит в заблуждение . Это относится к максимальному размеру страницы на базовый HTTP-запрос, отправляемый клиентом. Документация по --page-sizeопции делает это понятным:

Размер каждой страницы, которую нужно получить в сервисном вызове AWS. Это не влияет на количество элементов, возвращаемых в выводе команды. Установка меньшего размера страницы приводит к большему количеству обращений к службе AWS, получая меньше элементов за каждый вызов. Это может помочь предотвратить истечение времени ожидания вызовов службы AWS.

Это становится еще более понятным при чтении документации AWS о разбивке на страницы [2], которая описывает:

Для команд, которые могут возвращать большой список элементов, интерфейс командной строки AWS (интерфейс командной строки AWS) добавляет три параметра, которые можно использовать для управления количеством элементов, включенных в выходные данные, когда интерфейс командной строки AWS вызывает API службы для заполнения списка.

По умолчанию интерфейс командной строки AWS использует размер страницы 1000 и извлекает все доступные элементы . Например, если вы запустите aws s3api list-objects в корзине Amazon S3, которая содержит 3500 объектов, CLI выполняет четыре вызова Amazon S3, обрабатывая логику разбиения на страницы для конкретной службы в фоновом режиме и возвращая все 3500 объектов в конечном итоге. выход.

Как уже правильно сказал Ankit, использование этой --max-itemsопции является правильным решением для ограничения результата и остановки автоматической нумерации страниц:

Чтобы включить меньше элементов одновременно в вывод CLI AWS, используйте параметр --max-items. Интерфейс командной строки AWS по-прежнему обрабатывает нумерацию страниц со службой, как описано выше, но печатает только количество элементов за указанное время. [2]

Рекомендации

[1] https://docs.aws.amazon.com/cli/latest/reference/s3api/list-objects.html
[2] https://docs.aws.amazon.com/cli/latest/userguide/cli -usage-pagination.html

Автор: Martin Löper Размещён: 28.07.2019 08:21

2 плюса

Попробуйте использовать --max-itemsс командой.

В документе упоминается, что он вернется, NextMarkerкогда количество предметов больше, чем max-items. Вы можете передать его как starting-tokenпри следующем вызове для достижения нумерации страниц.

Автор: Ankit Deshpande Размещён: 26.07.2019 07:59
Вопросы из категории :
32x32