Насколько я понимаю, вы хотите, чтобы пользователи могли загружать изображения на ваш сайт, а после загрузки вы хотели бы обработать их каким-либо образом (изменение размера и т. Д.). Если это правильно, вот рабочий процесс, который я предлагаю.
Пусть ваш главный сервер приложений создаст предварительно подписанный URL для загрузки S3.Отправьте этот предварительно подписанный URL-адрес клиенту.Клиент сможет загрузить на S3.После завершения загрузки выполните обработку в фоновом режиме с рабочим (выборка из S3-process-upload).
Таким образом, вы можете избежать обращения с токеном для загрузки.S3 также поддерживает ограничения по времени для предварительно подписанного URL-адреса.
Я думал о создании отдельного сервера для обработки этого изображения и загрузки, чтобы снизить нагрузку на мой основной сервер приложений, я незнаю, должен ли я сделать это или, может быть, мне следует, но я просто решаю проблему воображаемой масштабируемости.
В этом случае имеет смысл отделить логику.Я бы не стал создавать новый сервер, просто фоновый процесс для обработки изображений.Если вам нужно масштабировать, вы всегда можете ускорить несколько таких фоновых процессов.
Если моя конечная точка на сервере изображений получает общий секрет для аутентификации и создания токена загрузки, достаточно ли этого для безопасности?
Как я уже говорил выше, используйте S3 для получения загрузки изображения.Клиенты будут загружать на S3 напрямую, это обеспечит вам безопасность.
Достаточно ли иметь оба сервера по протоколу https, чтобы гарантировать, что нет способа украсть секрет у человека в центреатака?
HTTPS обеспечивает конфиденциальность, которой достаточно для предотвращения перехвата трафика вашим человеком в середине.Используя предварительно подписанные URL-адреса AWS, вы также не будете пересылать секрет, кроме так называемой подписи.Вот вступление к теме и Собственная документация Amazon для получения дополнительной информации.