Я пытаюсь перечислить объекты с заданным префиксом, используя AWS S3 cli. Однако иногда он возвращает разные результаты для, казалось бы, идентичных структур папок.
Итак, вот команда № 1
aws s3api list-objects --bucket b --prefix 38d2f2e0-8091-11e9-aaa9-03fd73386354/raw
38d2f2e0-8091-11e9-aaa9-03fd73386354/raw/Pogonocherus_hispidus_Max.1001.png
38d2f2e0-8091-11e9-aaa9-03fd73386354/raw/Pogonocherus_hispidus_Max.mtl
38d2f2e0-8091-11e9-aaa9-03fd73386354/raw/Pogonocherus_hispidus_Max.obj
а тут №2
aws s3api list-objects --bucket b --prefix 5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw
5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/
5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/Pogonocherus_hispidus_Max.1001.png
5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/Pogonocherus_hispidus_Max.mtl
5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/Pogonocherus_hispidus_Max.obj
Я понятия не имею, почему он это делает. В идеале я хочу, чтобы результат всегда выглядел как № 1.
Что тут происходит?
Разница между двумя списками заключается в наличии во втором списке объекта подпапки raw/
. В S3 нет необходимости создавать папку перед записью объекта в эту папку. И когда вы создаете такой объект, как folder1/folder2/image.jpg
, S3 не создает структуру folder1/folder2/
; он просто записывает объект.
Итак, какой-то процесс, который вы используете, намеренно создает объект в 5d5c3abe-1a95-4e92-a03d-11fbf37d7851/raw/
для представления подпапки raw/
. Обычно нет необходимости создавать эту папку, но некоторые клиенты это делают. Как видите, в первом примере все отлично работает без подпапки raw/
.
Итак, посмотрите, можете ли вы определить некоторые различия в способе заполнения S3, которые могут привести к созданию подпапки uuid/raw/
.
Ты прав! Похоже, кто-то создал одну из папок вручную.
вы можете запустить результаты через grep, исключая все, что заканчивается на
/