Перейти к содержимому
В личный кабинет

Локальное подключение S3 к Default Uploader

В этом руководстве мы локально запустим MinIO, подключим его к Default Uploader и трансформируем файл, let’s go!

1. Создайте docker-compose файл

Этот скрипт скачает образ MinIO и утилиту, которая создаст пользователя, ключи доступа и бакет.

docker-compose.minio.yml
version: '3.8'
services:
minio:
image: minio/minio:latest
container_name: minio
environment:
- MINIO_ROOT_USER=admin
- MINIO_ROOT_PASSWORD=admin123
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio_data:/data
command: server /data --console-address ':9001'
minio_mc:
image: minio/mc:latest
container_name: minio_mc
depends_on:
- minio
volumes:
- ./wait-for-it.sh:/wait-for-it.sh
entrypoint: >
sh -c "
chmod +x /wait-for-it.sh &&
/wait-for-it.sh minio:9000 --timeout=30 --strict &&
mc alias set myminio http://minio:9000 admin admin123 &&
if mc admin user info myminio my_access_key >/dev/null 2>&1; then
echo 'User my_access_key already exists, skipping user creation';
else
mc admin user add myminio my_access_key super_secret_key;
fi &&
if mc ls myminio/mybucket >/dev/null 2>&1; then
echo 'Bucket mybucket already exists, skipping bucket creation';
else
mc mb myminio/mybucket;
fi &&
if mc admin policy info myminio readwrite --user=my_access_key >/dev/null 2>&1; then
echo 'Policy readwrite already attached to user my_access_key, skipping policy attachment';
else
mc admin policy attach myminio readwrite --user=my_access_key;
fi &&
echo '
The first two keys are needed to log into the MinIO WebUI management console,
the second two keys are Access Key ID and Secret Access Key in your personal account admin.defaultuploader.com' &&
echo 'Username Minio UI: admin' &&
echo 'Password Minio UI: admin123' &&
echo 'Access Key: my_access_key' &&
echo 'Secret Access Key: super_secret_key'
"
volumes:
minio_data:

2. Создайте wait-for-it.sh

Скопируйте файл из этого репозитория github

У вас должна получится такая файловая структура:

  • Директорияminio-for-local-development/
    • docker-compose.minio.yml
    • wait-for-it.sh

3. Запустите скрипт

docker-compose.minio.yml
cd minio-for-local-development &&
docker-compose -f docker-compose.minio.yml up

Установится minio, создастся пользователь, бакет и ключи для доступа.

// в консоли будет такой вывод, эти данные пригодятся на 5 шаге
...
minio_mc | Username Minio UI: admin
minio_mc | Password Minio UI: admin123
minio_mc | Access Key: my_access_key
minio_mc | Secret Access Key: super_secret_key

4. Откройте доступ minio в интернет

Можно использовать любой инструмент, пример будет на ngrok. Нужно открыть API порт minio в интернет.

ngrok
ngrok http 9000

Скопируйте адрес из поля Forwarding:

// Пример:
...
Forwarding https://332e-185-103-25-11.ngrok-free.app -> http://localhost:9000

5. Введите данные для подключения S3, полученные на предыдущих шагах.

Настройки для подключения S3 в личном кабинете Default Uploader.

Access Key ID -> my_access_key
Secret Access Key -> super_secret_key
Region -> us-east-1
Bucket -> mybucket
File endpoint -> {URL} из шага 4

Нажмите кнопку Сохранить и Проверить подключение. Так же включите опцию Мягкая миграция, она пригодится на следующем шаге.

6. Проверка.

Зайдите в консоль minio

Введите данные для входа

Username -> admin
Password -> admin123

Зайдите в бакет бакет и загрузите в него любую картинку.

  • Директорияmybucket/
    • cat.jpg

Теперь сформируйте ссылку для получения файла и его оптимизации.

https://api.defaultuploader.com/v1/image/upload/CLIENT_TOKEN/S3_FILE_PATH

CLIENT_TOKEN возьмите из личного кабинета.

У вас должна получится такая ссылка с вашим CLIENT_TOKEN и названием загруженного файла.

https://api.defaultuploader.com/v1/image/upload/66c78a393438de9506dd5e09/cat.jpg

И добавьте параметр ?w=100

https://api.defaultuploader.com/v1/image/upload/66c78a393438de9506dd5e09/cat.jpg?w=100

Готово! Вы успешно подключили локальный S3 к Default Uploader.