Принцип работы и использования облачного объектного хранилища

Для для мобильного приложения необходимо сохранять файлы. Есть backend с базой данных. Я не могу понять, файлы можно ведь сохранять сразу с мобильного приложения в облако, но! Это получается в приложении должны быть ключи, которые нужны для работы с облаком, не опасно ли это? Или необходимо загружать файл с приложения на сервер, а оттуда на облако? Кажется не целесообразным гонять файлы туда сюда, это ведь время на загрузку на сервер, а потом на облако? Или подскажите литературу или статью об использовании облачных хранилищ и архитектуре таких решений. Думаю что в работе с облаком не один подход, и нужно подобрать оптимальный для проекта.


Ответы (1 шт):

Автор решения: Roman Konoval

Для решения проблемы доступа к хранилищу используется следующий подход.

Когда мобильному приложению требуется, например, прочитать данные, оно запрашивает backend сервер, который генерирует временную ссылку на файл в хранилище. Эта ссылка дает доступ к одному файлу на протяжении ограниченого периода времени. Мобильное приложение использует ее для доступа к файлу напрямую.

Это работает как для чтения, так и для модификации или создания.

Условно код в мобильном приложении будет делать загрузку файла так:

URL tempUploadURL = myBackend.generateTemporaryUrlForUpload();
// tempUploadURL содержит URL который указывает в облако
http.put(tempUploadURL, fileContent, headers={'content-length': ...})

Вот тут и тут описание для AWS S3. Тут для azure.

→ Ссылка