gsutil / gcloud список файлов хранилища по ограничениям и разбиению на страницы

Есть ли способ перечислить файлы из корзины GCS с ограничениями.

Скажем, у меня в ведре 2k объектов. Но когда я использую gsutil ls, мне нужны только первые 5 объектов, а не все. Как этого добиться.

Также есть ли пагинация на страницы? gsutil ls gs: // my-bucket / test_file_03102021 * 2 ›/ dev / null | grep -i .txt $ || :


person Asif Billa    schedule 10.03.2021    source источник


Ответы (2)


Судя по gsutil help ls, gsutil в настоящее время не имеет возможности ограничить количество элементов, возвращаемых при вызове ls.

Хотя вы можете передать результаты во что-то вроде awk, чтобы получить только первые 5 элементов, это было бы довольно расточительно, если у вас много объектов в вашем ведре (поскольку gsutil будет продолжать выполнять HTTP-вызовы с разбивкой на страницы, пока не будут перечислены все N ваших объектов) .

Если вам нужно делать это регулярно для корзины с большим количеством объектов, лучше написать короткий сценарий, который использует одну из клиентских библиотек GCS. В качестве примера ознакомьтесь с библиотекой Python для облачного хранилища Google - в частности, см. list_blobs, который принимает параметр max_results.

person mhouglum    schedule 10.03.2021

При прямом использовании API доступна разбивка на страницы. Если вам нужны только 5 первых объектов и вы используете gsutil, вам придется дождаться полного ответа от сотен (тысяч, миллионов, ...) файлов, прежде чем получить только первые 5.

Если вы используете API, вы можете это сделать

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \ 
  "https://storage.googleapis.com/storage/v1/b/<BUCKET_NAME>/o?alt=json&&maxResults=5" \ 
  | jq .items[].name

Конечно, вы можете изменить максимальный размер результатов

Вы также можете включить префикс при фильтрации. Подробнее читайте в документации по API.

person guillaume blaquiere    schedule 11.03.2021