Amazon S3 на самом деле не имеет папок / каталогов.
Например, вы можете запустить эту команду:
aws s3 cp foo.txt s3://my-bucket/a/b/c/foo.txt
Это работает, даже если путь a/b/c
не существует.
Затем, если этот объект затем удаляется, путь исчезает.
Это потому, что имя файла ('Key') каждого объекта - полный путь .Amazon S3 делает его «похожим» на каталоги, но на самом деле их нет.
Итак, что происходит, когда вы создаете папку?Ответ заключается в том, что система создает объект нулевой длины с тем же именем, что и путь.
В вашем случае существует объект нулевой длины с именем /a/b/c/f/
.Это приводит к появлению каталога (даже если такого понятия как каталог нет).
Хотя a/b/c/f/
может не содержать объект, является объектомназывается a/b/c/f/
.
Как это решить?Вот несколько вариантов:
- Не создавать каталоги .Пусть они автоматически «появляются» через создание объектов по заданному пути.Таким образом, не будет файлов нулевой длины с именем каталога.
- Измените код , чтобы игнорировать объекты нулевой длины.