ユーザーの写真が非公開のアプリがあります。写真(サムネイルも)をAWS s3に保存します。サイトには、ユーザーが自分の写真 (サムネイルなど) を表示できるページがあります。今私の問題は、これらのファイルをどのように提供するかです。私が評価したいくつかのオプションは次のとおりです。
- 署名付き URL 生成を使用して CloudFront (または AWS) からファイルを提供します。しかし問題は、ユーザーがページを更新するたびに、非常に多くの署名済み URL を再度作成してロードする必要があることです。したがって、ブラウザに画像をキャッシュすることはできません。これは良い選択でした。とにかくまだjavascriptでやるべきことはありますか? セキュリティ上の問題により、これらの URL の有効性を長く維持することはできません。次に、その時間枠内で誰かがその URL を入手した場合、アプリからの認証を実行せずにファイルを表示できます。
- その他のオプションは、S3 サーバーからストリーミングした後、Express アプリ自体からファイルを提供することです。これにより、http キャッシュ ヘッダーを使用できるため、ブラウザーのキャッシュが有効になります。また、認証されていないと誰もファイルを表示できないようにします。理想的には、ファイルをストリーミングしたいと思います。NGINX プロキシ リレーを使用してホストしているファイルを、反対側の NGINX にストリーミングします。しかし、私が見るように、それはファイルが同じシステムのファイルに存在する場合にのみ可能です。しかし、ここではそれをストリーミングして、ストリームが完了したら戻る必要があります。ファイルをローカルに保存したくない。
2つのオプションのどちらがより良い選択であるかを評価することはできません?? できるだけ多くの作業を S3 またはクラウドフロントにリダイレクトしたいのですが、署名された URL を使用しても、リクエストは最初にサーバーに送信されます。キャッシング機能も欲しい。
では、どのような方法が理想的でしょうか?それらの方法に関する特定の質問に対する答えはありますか?