1

У меня есть ведро S3 с кучей префиксов верхнего уровня. У меня есть относительно неэффективный способ суммирования байтов по префиксам верхнего уровня:

  1. Получить список префиксов можно с помощью aws s3 ls [bucket name] , затем следует sed/grep.
  2. выполните цикл bash for для этих префиксов, запустив aws s3api list-objects --bucket [bucket name] --prefix $prefix --output json --query [sum(Contents[].Size)] .

Это кажется мне неоптимальным по всем обычным причинам, что циклы for неоптимальны. Во-первых, я бы хотел, чтобы он был автоматически распараллелен на стороне AWS.

Мне кажется, что должен быть способ JMESPath, по сути, возвращать список пар (префикс, сумма (размер)) по всем префиксам верхнего уровня. Но я не могу понять, как это сделать. Добавление --delimiter '/' возвращает только CommonPrefixes; он не возвращает никакой другой информации (включая размер), поэтому я не мог использовать ее для получения суммы, которую я ищу.

Есть какой-то трюк, который я пропускаю? Или цикл for - лучший вариант, который у меня есть?

0