0

2 つのアプリケーションABで構成される分散システムがあります。

B は A の特定の API を呼び出します。この API に対して、ファイルが生成されて にアップロードされている間に、基になるワークフローが実行されますS3Aは、アップロードする前にファイルに対してクライアント側の暗号化を行います。Bへの API 応答は、アップロードされたファイルのバケット + リンクの場所です。

後の時点で、Bは S3 からファイルをダウンロードしたいと考えています。

これを行うには2つの方法があります -

  1. B側でダウンロード機能を実装する場合、 Aがアップロードに使用した AWS キーを知る必要があります。
  2. Adownloadに機能をBに公開してもらい、 Aがアップロードに使用するAWS キーをBが知る必要がないようにします。



オプション 2 は、物事を行うための正しい方法のようです。
私の理解は正しいですか、それともより合理的な第3のアプローチがありますか?

4

1 に答える 1

0

クエリ文字列認証を使用する「中途半端な家」を検討することをお勧めします。基本的に、B がファイルをダウンロードしたい場合、B は A にダウンロード リンクを要求します。次に、A は期限付きの署名済みリクエスト URLを生成し、B はそれを使用して S3 から直接ファイルをダウンロードできます。

質問に「java」というタグを付けたので、AWS Java SDK を使用していると仮定します。この場合、必要なメソッドはgeneratePresignedUrlAmazonS3Client にあります。

于 2012-08-08T15:46:05.233 に答える