Обслуживание файлов, хранящихся в S3 в приложении express / nodejs

У меня есть приложение, где пользовательФотографии являются частными. Я храню фотографии (также миниатюры) в AWS s3. На сайте есть страница, где пользователь может просматривать свои фотографии (т.е. миниатюры). Теперь моя проблема в том, как мне обслуживать эти файлы. Некоторые варианты, которые я оценил:

Обслуживание файлов из CloudFront (или AWS) с использованием подписанного URL-адреса. Но проблема в том, что каждый раз, когда пользователь обновляет страницу, мне приходится снова создавать столько подписанных URL-адресов и загружать ее. Поэтому я не смогу кэшировать изображения в браузере, что было бы хорошим выбором. Есть ли что-то еще делать в javascript? Я не могу иметь срок действия этих URL из-за проблем безопасности. И, во-вторых, за этот промежуток времени, если кто-то заполучил этот URL, он может просматривать файл, не проходя аутентификацию из приложения.Другим вариантом является подача файла из самого приложения Express после потоковой передачи с серверов S3. Это позволяет мне иметь заголовки кеша http, поэтому включить кеширование в браузере. Это также гарантирует, что никто не сможет просмотреть файл без проверки подлинности. В идеале я хотел бы передать файл и хостинг, используя прокси-сервер NGINX, ретранслировать потоковую передачу на другую сторону в NGINX. Но, как я понимаю, это возможно только в том случае, если файл существует в той же системе.с файлами. Но здесь я должен передать это и вернуться, когда я получу поток завершен. Дон»Я не хочу хранить файлы локально.

Я не могу оценить, какой из двух вариантов будет лучшим выбором? Я хочу перенаправить как можно больше работы на S3 или облачный фронт, но даже с использованием однотипных URL-адресов также сначала отправляет запрос на мои серверы. Я также хочу функции кэширования.

Итак, что было бы идеальным способом сделать? с ответами на конкретные вопросы, относящиеся к этим методам?

Ответы на вопрос(4)

Ваш ответ на вопрос