Как AWS S3 хранит файлы? (структура каталогов)
Мы находимся в фазе разработки. Мы планировали использовать выделенную инфраструктуру, но поменяли решение на облако AWS.
Структура каталогов для загруженных изображений была реализована следующим образом:
web_root \ {год}\{месяц}\{день}\{тип}_{} filename_md5_hash.jpeg
Где тип либо s
для маленького изображения или o
для оригинального размера. Маленькое изображение создано с использованием фильтра.
Проблема в том, что я слышал, что AWS S3 не дает вам контроля над структурой каталогов внутри корзины.
Ваши бесценные объяснения всегда были очень полезны. Спасибо
2 ответа
Это описано в документации AWS S3:
В Amazon S3 корзины и объекты являются основными ресурсами, где объекты хранятся в контейнерах. Amazon S3 имеет плоскую структуру без иерархии, как вы видели бы в типичной файловой системе. Однако в целях организационной простоты консоль Amazon S3 поддерживает концепцию папок как средство группировки объектов. Amazon S3 делает это с помощью префиксов имен ключей для объектов.
Например, вы можете создать в консоли папку с именем
photos
и сохранить объект с именемmyphoto.jpg
в этом. Затем объект сохраняется с именем ключаphotos/myphoto.jpg
, гдеphotos/
это префикс....
У вас могут быть папки внутри папок, но не корзины внутри корзин. Вы можете загружать и копировать объекты прямо в папку. Папки можно создавать, удалять и публиковать, но их нельзя переименовывать. Объекты можно перемещать из одной папки в другую.
Таким образом, вы действительно можете загружать файлы в S3, используя похожую структуру папок в вашем ведре:
http://{bucket}.{endpoint}.amazonaws.com/web_root/{year}/{month}/{day}/{type}_{filename_md5_hash}.jpeg
Или же
http://{endpoint}.amazonaws.com/{bucket}/web_root/{year}/{month}/{day}/{type}_{filename_md5_hash}.jpeg
S3 не является нормальной файловой системой и не имеет файловой структуры как таковой, но у нее есть вложенные ключи для ссылок на объекты и даже вид, что она похожа на файловую систему с API (вы используете aws s3 ls
перечислить ведро, а затем использовать его, когда вы перемещаетесь по дереву объектов так же, как в файловой системе).
Так что если вы хотите создать объект с именем foo_ashdbasd.jpeg
и обычно вы хотите, чтобы это сидело в структуре папок, как это web_root\2016\06\15
затем вы просто пишете объекту в вашем S3-контейнере под названием web_root/2016/06/15/foo_ashdbasd.jpeg
,