Получить список каталогов первого уровня в корзине AWS S3

В моих корзинах S3 много каталогов первого уровня. Каждый содержит свои данные.

- Bucket
   -- dir_1
       -- file1
        -- file2
   -- dir_2
       -- somefile

Я хочу получить общий размер (включая все подобъекты под ним) каждого объекта первого уровня (dir_1, dir_2) в ведре. Я пробовал как ListObjects, так и ListObjectsV2 с разными значениями параметра префикса, но он либо не дает данных, либо дает все данные, включая объект внутри объектов.


person Saqib    schedule 04.08.2020    source источник
comment
Что вы подразумеваете под размером выборки каждого объекта первого уровня? Вы имеете в виду, что хотели бы знать общий объем памяти, занимаемый всеми файлами в пределах dir_1? Или вы просто хотите увидеть размер отдельных объектов в самом верхнем каталоге?   -  person John Rotenstein    schedule 05.08.2020
comment
@JohnRotenstein Я хочу получить общий размер dir_1, включая все его подобъекты.   -  person Saqib    schedule 06.08.2020
comment
На самом деле каталогов в Amazon S3 не существует, поэтому я буду интерпретировать ваши требования как вычисление общего размера объектов с префиксом dir_1/. Вам нужно будет рассчитать это самостоятельно, как объяснил @Marcin ниже.   -  person John Rotenstein    schedule 06.08.2020


Ответы (1)


К сожалению, нет вызова API, который может дать вам размер ваших папок/префиксов.

Обычно для этого вам нужно слишком перебирать все объекты самостоятельно, получать их данные и вычислять размер.

Поскольку это распространенный запрос, для него уже создано много рецептов. Например, здесь или здесь.

Альтернативой является использование ресурсов Amazon S3. Инвентаризация будет ежедневно создавать CSV-файл с метаданными ваших объектов. Затем вы можете проанализировать его, чтобы рассчитать размеры на основе префиксов.

person Marcin    schedule 04.08.2020