У меня есть ведро S3 с кучей префиксов верхнего уровня. У меня есть относительно неэффективный способ суммирования байтов по префиксам верхнего уровня:
- Получить список префиксов можно с помощью
aws s3 ls [bucket name]
, затем следует sed/grep. - выполните цикл bash for для этих префиксов, запустив
aws s3api list-objects --bucket [bucket name] --prefix $prefix --output json --query [sum(Contents[].Size)]
.
Это кажется мне неоптимальным по всем обычным причинам, что циклы for неоптимальны. Во-первых, я бы хотел, чтобы он был автоматически распараллелен на стороне AWS.
Мне кажется, что должен быть способ JMESPath, по сути, возвращать список пар (префикс, сумма (размер)) по всем префиксам верхнего уровня. Но я не могу понять, как это сделать. Добавление --delimiter '/'
возвращает только CommonPrefixes; он не возвращает никакой другой информации (включая размер), поэтому я не мог использовать ее для получения суммы, которую я ищу.
Есть какой-то трюк, который я пропускаю? Или цикл for - лучший вариант, который у меня есть?