0

S3初心者です。s3 についての私の理解では、ブラウザが画像を要求すると、サーバーは s3 に接続して、ファイル システムであるかのように画像を取得し、ストリームを取得して、出力をブラウザに送信する必要があります。s3バケット/イメージのURLを直接提供する方法があるかどうか疑問に思っていますが、これは認証後に行う必要があり、しばらくするとイメージに再びアクセスできるように時間制限が必要です。

アップロードも同様。ファイル名などのアップロードの詳細はサーバーに送信する必要がありますが、画像は s3 に入り、サーバーで成功/エラーが更新されます。これは可能ですか?サーバーでnodejsを使用する予定です

knox について聞いたことがありますが、これがどこに適合するかはわかりません。

4

1 に答える 1

1

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に慣れていませんが、これらのことの一部またはすべてを実行する方法を提供するライブラリのようです。

于 2013-02-08T00:06:26.743 に答える