Локальное подключение S3 к Default Uploader
В этом руководстве мы локально запустим MinIO, подключим его к Default Uploader и трансформируем файл, let’s go!
1. Создайте docker-compose файл
Этот скрипт скачает образ MinIO и утилиту, которая создаст пользователя, ключи доступа и бакет.
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. Запустите скрипт
cd minio-for-local-development &&docker-compose -f docker-compose.minio.yml up
Установится minio, создастся пользователь, бакет и ключи для доступа.
// в консоли будет такой вывод, эти данные пригодятся на 5 шаге...minio_mc | Username Minio UI: adminminio_mc | Password Minio UI: admin123minio_mc | Access Key: my_access_keyminio_mc | Secret Access Key: super_secret_key
4. Откройте доступ minio в интернет
Можно использовать любой инструмент, пример будет на ngrok. Нужно открыть API порт minio в интернет.
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_keySecret Access Key -> super_secret_keyRegion -> us-east-1Bucket -> mybucketFile endpoint -> {URL} из шага 4
Нажмите кнопку Сохранить и Проверить подключение. Так же включите опцию Мягкая миграция, она пригодится на следующем шаге.
6. Проверка.
Зайдите в консоль minio
Введите данные для входа
Username -> adminPassword -> 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.