Bereitstellen von in S3 gespeicherten Dateien in der App express / nodejs

Ich habe eine App, in der die Fotos der Benutzer privat sind. Ich speichere die Fotos (auch Thumbnails) in AWS s3. Auf der Website befindet sich eine Seite, auf der der Benutzer seine Fotos (z. B. Miniaturansichten) anzeigen kann. Jetzt ist mein Problem, wie ich diese Akten versorge. Einige Optionen, die ich ausgewertet habe, sind:

Bereitstellen von Dateien aus CloudFront (oder AWS) mithilfe der Generierung signierter URLs. Aber das Problem ist jedes Mal, wenn der Benutzer die Seite aktualisiert, muss ich so viele signierte URLs erneut erstellen und laden. Daher kann ich die Bilder nicht im Browser zwischenspeichern, was eine gute Wahl gewesen wäre. Gibt es sowieso noch was in javascript zu tun? Ich kann die Gültigkeit dieser URLs aus Sicherheitsgründen nicht länger garantieren. Und zweitens kann jemand innerhalb dieses Zeitraums die Datei anzeigen, ohne die Authentifizierung über die App durchlaufen zu müssen, wenn er diese URL erhalten hat.Eine andere Möglichkeit besteht darin, die Datei von meiner Express-App selbst bereitzustellen, nachdem sie von S3-Servern gestreamt wurde. Dies ermöglicht es mir, HTTP-Cache-Header zu haben, und daher das Browser-Caching zu aktivieren. Außerdem wird sichergestellt, dass niemand eine Datei anzeigen kann, ohne authentifiziert zu werden. Idealerweise möchte ich die Datei streamen und ein Hosting mit NGINX-Proxy-Relay die andere Seite auf NGINX streamen. Aber wie ich sehe, kann das nur möglich sein, wenn die Datei in den gleichen Systemdateien vorhanden ist. Aber hier muss ich es streamen und zurückkehren, wenn der Stream vollständig ist. Ich möchte die Dateien nicht lokal speichern.

Ich bin nicht in der Lage zu bewerten, welche der beiden Optionen eine bessere Wahl wäre? Ich möchte so viel Arbeit wie möglich an S3 oder Cloudfront weiterleiten, aber auch mit gesengten URLs wird die Anfrage zuerst an meine Server weitergeleitet. Ich möchte auch Caching-Funktionen.

Was wäre also der ideale Weg? mit den Antworten auf die speziellen Fragen zu diesen Methoden?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage