
В начале октября 2021 года, разработчики движка DataLife Engine выпустили официальный релиз под номером 15.0, в котором последовало больше 30 изменений — в частности менеджера загрузок, настройка водяного знака, визуального редактора TinyMCE и многое другое. Между всеми изменениями была добавлена функция внешнего хранилища.
Зачем нужно внешнее хранилище?
Предположим, на нашем сайте есть сотни файлов, одни из которых имеют высокий размер. Чем больше пользователей скачивают файл, тем высокая нагрузка поступает на сервер.
С такой проблем столкнулся и я. На моём сайте загружены файлы больше 100 мб, каждый день их скачивают более 1000 юзеров в сутки, таким образом сервер сильно нагружается и становится недоступным. Мой сервер не может похвастаться «крутыми» характеристиками, решаю обойти с помощью внешнего облачного хранилища.
Начало работы с Amazon S3: Создание и настройка хранилища
Регистрируемся на AWS, после успешной регистрациипереходим по ссылке. Мы попадаем на страницу Консоли управления, в поисковой строке введите «s3» и перейдите на страницу которое появится в результате поиска. Если ничего нет, убедитесь что вы находитесь в разделе Services.
На текущей странице нас интересует только три настройки: Название, регион и доступ.
- Введите любое название своего хранилища в строке Bucket name.
- Выберите регион (AWS Region) где будут расположены ваши файлы. Выбирайте тот регион к которому ближе.

- В разделе Object Ownership выберите ACLs enabled.

- Далее в разделе «Block Public Access settings for this bucket» уберите все галочки чтобы корзина стала публичным. Это нужно чтобы каждый пользователь интернета смог получить информацию на сервере (картинки, файлы, видео и т.д). Ниже незабываем поставить галочку что мы в курсе.

Это все настройки, спускаемся ниже и нажимаем «Create bucket» (Создать корзину).
После успешного создания, заходим в корзину и переходим в раздел «Permissions». Находим строку «Bucket policy», нажимаем «Edit» и вставляет этот фрагмент JSON:
{
"Version": "2008-10-17",
"Statement": [
{
"Sid": "AllowPublicRead",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::my-bucket-894361/*"
}
]
}
Где my-bucket-894361, вставляйте своё имя корзины. Нажимаем «Save changes».
После этого, переходим в раздел «Security credentials» — его можно найти в правом верхнем углу нажав на свой ник.

Мы попадаем на страницу Управление идентификацией и доступом (IAM). Нас интересует раздел «Users», переходим и нажимаем «Add users».
Вводим любое имя и ставим галочку в Access key — Programmatic access.

На втором пункте мы ничего из списка не выбираем. Создадим свою политику сами:
- Нажмите Create policy
- Откроется новое окно, откройте раздел JSON и вставьте этот код:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:CreateBucket",
"s3:DeleteObject",
"s3:Put*",
"s3:Get*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::my-bucket-894361",
"arn:aws:s3:::my-bucket-894361/*"
]
}
]
}
- Нажимаем Next: Tags, в следующем разделе также нажимаем Next: Review

- В следующем разделе придумайте имя вашей политики.Важно его запомнить, он нам понадобиться в будущем.

- После чего, нажимаем Create policy
После создания, возвращаемся обратно и обновляем список.

Выбираем ранее созданную политику и двигаемся дальше нажав на кнопку Next: Tags.

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

- Access key ID вставляем в Client Key ID, а Secret access key в Secret Key;
- Вставляем название бакета, в моём случае my-bucket-894361. Вы должны вставить своё название бакета;
- В поле региона вставляем регион. Узнать его можно в разделе S3 (мы там уже были).

- Поле «Путь к файлам на внешнем сервере» оставляем пустым, так как мы не создавали папок.
- Теперь мы должны узнать URL адрес нашего бакета. Загружаем любую картинку и копируем URL бакета.

- URL вставляем в HTTP адрес для внешнего хранилища;
- Сохраните изменения.
Настройка завершена.