Context
Я создаю API-интерфейсы REST без учета состояния для платформы на основе браузера, которая должна хранить некоторые пользовательские файлы. Эти файлы могут быть в ГБ.
Я использую AWS S3 для хранения. В прошлом для этого я использовал AWS SDK для маршрутизации загрузки файлов через сервер NodeJS (в основном - загрузка на сервер, загрузка сервера на S3).
Я пытаюсь выяснить, как улучшить его, используя предварительно подписанные URL-адреса. Я понимаю динамику и процесс получения предварительно назначенных URL-адресов и загрузки файла непосредственно на S3.
Я не могу использовать SQS или Lambda для запуска события, созданного объектом.
Архитектура должна быть независимой от AWS.
Вопрос
Простейшие потоки, которые мне нужны, довольно распространены -
- Пользователь -> Открывает профиль
- Кликов Загрузить фото
- Клиент отправляет запрос на / getSignedUrl
- Сервер Возвращает подписанный URL для имени / типа файла
- Клиент выполняет запрос PUT / POST, чтобы загрузить файл в подписанный URL
- Загрузка успешно завершена
После этого - мое понимание -
- Клиент сообщает серверу - Файл успешно загружен
- Сервер связывает URL-адрес S3 для фотографии с пользователем.
... и это моя проблема. Как безопасно связать успешно загруженный файл с пользователем на сервере?
Не уверен, что я пропустил. Это похоже на тривиальный вариант использования, но я не смог ничего найти по этому поводу.