2015-11-06 3 views
1

Я с помощью функции ListObject без разделителей, и в результате у меня есть то, что выглядит следующим образом:AWS S3 - ListObjects возвращает неполные списки каталогов

/BF 
/BF/FTP 
/BF/MUSIC/LIBRARY/AUDITION/BEAKING%20EARLY.MP3 
/BF/VIDEO/ 
/BF/VIDEO/Example 
/BF/VIDEO/Example/test.mp4 

Проблема в музыкальной папке. Почему ListObjects не возвращает S3Object с ключом: «/ BF/MUSIC». Есть много S3Object с той же проблемой. Почему это происходит?

ответ

3

Причина в том, что S3 имеет плоскую структуру. Нет папок, но он просто распознает косую черту, поэтому группирует те, у которых один и тот же префикс в той же папке. Поэтому в вашем примере «/ BF/MUSIC» будет просто еще одним объектом, а не пустой папкой.

В Amazon S3 основными компонентами являются ведра и объекты, где объекты хранятся в ведрах. Amazon S3 имеет плоскую структуру без иерархии , как вы видели в типичной файловой системе. Однако для ради организационной простоты консоль Amazon S3 поддерживает концепцию папки как средство группировки объектов. Amazon S3 делает это с использованием префикса имени ключа для объектов.

Источник: AWS Documentation: Working with Folders

+0

мне нужно написать что-то вроде папки проводника для ведра, у вас есть какие-либо идеи, как я могу получить путь, например: «/ BF/MUSIC» с помощью ListObjects или что-то еще? – neustart47

+0

Не то, чтобы я знал. Возможно, вам придется придумать свой собственный алгоритм, например, рассматривать все до/в качестве подпапки и отслеживать их для группировки объектов. –

+1

@ neustart47 это '' разделитель' * для *. Он возвращает «папки» в '' в XML-ответе. –

Смежные вопросы