📦 Внешнее хранилище (S3) и Cloud Functions
Когда стандартного Storage (Firebase/Supabase) недостаточно по цене или функционалу, разработчики используют внешние S3-совместимые хранилища.
🚀 Использование S3 с Supabase
Если вы используете self-hosted Supabase, вы можете подключить к нему любое S3-совместимое хранилище.
- Преимущество: Вы работаете с ним через интерфейс Supabase (папки, бакеты) и встроенные средства FlutterFlow, как с нативным хранилищем.
- Безопасность: Ключи доступа хранятся на сервере Supabase, а не в коде мобильного приложения.
🛠 Реализация через Cloud Functions (Firebase)
Если бэкенда нет, а использовать внешнее хранилище нужно, используйте Cloud Functions.
Зачем это нужно?
- Безопасность: Ключи подключения к S3 нельзя хранить на клиенте (их легко украсть). Функция на сервере выступает посредником.
- Ресайз изображений: Это критически важно! Если пользователь загружает фото на 4Мб, отдавать его другим пользователям нужно пережатым до 100-200Кб.
Логика работы:
- Клиент вызывает Cloud Function.
- Функция принимает файл, пережимает его и сохраняет в S3.
- Функция раскладывает фото по папкам пользователей и возвращает URL.
🔗 Ресурсы:
- Что такое S3-хранилище (Блог Selectel) — Понимание объектного хранения.
- Firebase Callable Functions (Docs) — Официальная документация по вызову серверных функций.
По материалам @Kosmorangers и @skripov_channel