2013-04-08 9 views
8

Amazon S3にコンテンツファイルを保存するPHP Webサイトを構築しています。ウェブサイトファイル(PHPコード付き)は従来のサーバー上でホストされています。ユーザーはウェブサイトに登録し、登録してログインするとS3上のファイルにアクセスできます。登録ユーザーのみがAmazon S3バケットからダウンロードできるようにする

質問は、ログインしたユーザーだけがファイルをダウンロードして他の人がダウンロードできないようにする方法です。 AWS IAMは何らかの形で関与する必要がありますか?

期限切れのURLは必要ありません。特定のユーザーだけにファイルへのアクセス権を与えたいと思っています。他のユーザーといつでもリンクを共有したくはありません。

今後、ユーザーが異なるファイルにアクセスするユーザーアカウントの種類によっては、登録ユーザーのファイルへのアクセスも制限したいと考えています。

返信用に事前にThx!

+4

S3では不可能です。最初にWebサーバーにファイルをダウンロードし、そこから配信するか、期限切れのURLを作成する必要があります。 – sprain

+2

thx!少なくともあなたは他の穴のように私の質問をd​​ownvotingの代わりに何かを答えた – Val

+1

+1、私はまた、ソリューションを探していたと私は質問がダウン投票する必要があります理由を参照してください。 – kiranvj

答えて

3

これは可能です...私のアプリケーションがS3バケットのデータへのアクセスを制御するPHPではなくRORを使用します。私は、私のアプリがアクセスできるバケツを持っていて、ファイルへのアクセスは自分のアプリのクレデンシャルによって制限されています。理にかなっている?

私のアセット(公開されている画像)と、自分のアプリケーションだけがアクセスできるバケットを格納するパブリックバケットがあります。私のアプリケーションのユーザーは、資格情報に基づいて特定のビットのバケットにしかアクセスできません。

データベースには、正確なs3ファイル/場所への参照、アクセス方法(暗号化された資格情報とトランザクション中に渡されたキー)、およびアクセスできるユーザーが格納されています。

S3バケットからのWebアセットの配信とS3バケットへのアップロードフォームの作成についてお読みください。それはあなたにウィットS3のバケットをどのように相互作用させるかのアイデアを与えるでしょう。バケットのコンテンツと対話できるようになると、Webアプリケーションでのアクセスを制御できます。

Good Luck!

+0

ファイルデータはどのようにストリーミングされていますか?あなたのサーバーを経由するか、またはS3からユーザーに直接渡されますか? RORだけで可能ですか?私は、UndesignedからPHPとカスタムS3クラスを使用しています:http://undesigned.org.za/2007/10/22/amazon-s3-php-classと私はおそらく署名されたURLに固執する必要があります – Val

+1

いずれにせよ... http://aws.amazon.com/articles/1434は自分で実装する直接的な方法です。私はPHPを知らないが、RORにはあなたのためにそれを行うためのプラグインがたくさんある(wave carrier、rails-direct-upload、paperclip、swf-upload)。 – twinturbotom

関連する問題