Как 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,

Другие вопросы по тегам