Servindo arquivos armazenados no S3 no aplicativo express / nodejs

Eu tenho app onde as fotos do usuário são particulares. Eu armazeno as fotos (miniaturas também) no AWS s3. Existe uma página no site onde o usuário pode visualizar suas fotos (por exemplo, miniaturas). Agora meu problema é como eu sirvo esses arquivos. Algumas opções que eu avaliei são:

Servindo arquivos do CloudFront (ou AWS) usando geração de URL assinada. Mas o problema é que toda vez que o usuário atualiza a página eu tenho que criar tantos URLs assinados novamente e carregá-lo. Portanto, não serei capaz de armazenar em cache as Imagens no navegador, o que teria sido uma boa escolha. Existe alguma maneira de fazer ainda em javascript? Eu não posso ter a validade desses URLs por mais tempo devido a problemas de segurança. E em segundo lugar, dentro desse prazo, se alguém se apossar desse URL, ele pode ver o arquivo sem passar pela autenticação do aplicativo.Outra opção é servir o arquivo do meu aplicativo expresso depois de transmiti-lo dos servidores S3. Isso me permite ter cabeçalhos de cache http, portanto, habilite o cache do navegador. Ele também garante que ninguém possa visualizar um arquivo sem ser autenticado. O ideal é que eu gostaria de transmitir o arquivo e eu estou hospedando usando o proxy NGINX no outro lado streaming para NGINX. Mas, como eu vejo, isso só é possível se o arquivo existir nos mesmos arquivos do sistema. Mas aqui eu tenho que transmitir e retornar quando eu conseguir o fluxo está completo. Não quer armazenar os arquivos localmente.

Eu não sou capaz de avaliar qual das duas opções seria uma escolha melhor? Eu quero redirecionar o máximo de trabalho possível para S3 ou cloudfront, mas mesmo usando URLs chamuscadas também faz a solicitação primeiro para os meus servidores. Eu também quero recursos de cache.

Então, qual seria a maneira ideal de fazer? com as respostas para as questões específicas relativas a esses métodos?

questionAnswers(4)

yourAnswerToTheQuestion