S3の理解は不完全です。
ダウンロード時:サーバーに「[S3]がファイルシステムであるかのように」またはHTTP経由でS3からイメージ(または他のファイル)を取得させてからクライアントに中継させることは可能ですが、不要です。これは不要であるだけでなく、おそらく帯域幅とサーバーリソースの浪費であり、ほぼ確実に遅延が増加します。
画像を保護する必要がない場合は、適切なS3エンドポイント+バケット+オブジェクト(またはバケット+エンドポイント+オブジェクト-ほとんどの場合、URLは2つの異なる方法で構築できます)へのリンクを使用するだけです。 。
ドキュメントから:
バケットは、AmazonS3に保存されているオブジェクトのコンテナです。すべてのオブジェクトはバケットに含まれています。たとえば、photos / puppy.jpgという名前のオブジェクトがjohnsmithバケットに保存されている場合、URLhttp: //johnsmith.s3.amazonaws.com/photos/puppy.jpgを使用してアドレス指定できます。
httpsを使用することもできます。
一方、ファイルへの不正アクセスを防止したい場合は、パブリックアクセスを許可しないようにバケットを構成し、Webサーバーで署名付きURLを生成することでクエリ文字列認証を使用できます。これにより、ユーザーのブラウザに一時的な資格情報が期限切れになります。 、次のようになります。
http://johnsmith.s3.amazonaws.com/photos/puppy.jpg?AWSAccessKeyId=AKIAIOSFODNN7EXAMPLE&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D
選択した値である有効期限が過ぎると、このURLは機能しなくなります。いいえ、「有効期限」の値を変更しても機能しません。:)
もちろん、次にユーザーがサイトにアクセスすると、サーバーは同じ画像への新しい署名付きURLを生成し、その後のセッションでブラウザーが使用できるようにします。
アップロードのプロセスは、ドキュメントでも説明されています。ここでも、両方のアプローチが可能です。
Webサイトは、承認と認証の詳細を含むHTMLフォームを作成して、ブラウザーがファイルをS3に直接POSTできるようにします。これにより、アップロードが完了して成功を示すと、ブラウザーはサイトに(指定したURLで)リダイレクトされます。または失敗...または、ブラウザに通常どおりファイルをWebサーバーにアップロードさせ、WebサーバーでプロキシまたはS3に転送することができます。
私はknoxに慣れていませんが、これらのことの一部またはすべてを実行する方法を提供するライブラリのようです。