2011-12-19 10 views
1

ここには:AWS S3と携帯電話のアーキテクチャ

私はフォルダとモバイルアプリケーションを持つAWS S3バケットを持っています。

私はこれらのアーキテクチャであるような2間でサーブレットを作成したい:

電話<>サーブレット<> S3

私は携帯電話はS3への直接アクセスを持ってしたくないとサーブレットには、資格情報を使用してS3バケットとの間でアップロードとダウンロードを行うためのアクセスキーと秘密鍵があります。

携帯電話に最初に画像のプレビューを表示すると、https://s3.amazon.com/abc/abc.jpgのような画像URLが読み込まれ、電話にキャッシュされます。以前はバケツポリシーをpublicに設定していましたので、誰でも画像へのアクセス権を持っていましたが、今はセキュリティを確保したいので、その間にサーブレットの追加レイヤーを追加します。

私の考えは、電話機にサーブレットにPOSTリクエストを送信させることです。 電話ユーザーを認証した後のサーブレットは、資格情報を使用してS3バケットからファイルをダウンロードします。サーブレットはファイルをbase64でエンコードし、表示用に電話機に送信します。

私の質問は、これを処理するより良い方法はありますか?例: サーブレットにPOSTを送信します。サーブレットは認証し、何らかの形で資格情報を使用して電話をバケットのイメージURLリンクにリダイレクトし、base64エンコーディング部分をスキップできます。

これを行うには、より適切な方法がありますか?ありがとう!

答えて

1

Amazon S3には、保護されていないコンテンツにアクセスするためのURLを作成するための制限付きの「事前署名済みURL」機能があります。 their documentation pageで「クエリ文字列要求認証の代替」を探します

サーブレットに署名済みのURLを生成させ、クライアントにリダイレクトとして提供することができます。

+0

S3に画像をアップロードするのと同様の方法はありますか? – Maurice

+0

ああ、GETの代わりにPUTを実行することが可能です。方向性に感謝します。 – Maurice

0

事前署名されたuRLには有効期限が必要です。後でアクセスの拡大や削除を気にしないときは、素晴らしい選択肢です。完全な即時制御のために、私はS3の「家事」を処理するための中間サーバーを選択しました。

関連する問題