1

Devise、AWS S3、および Highcharts を使用して Rails アプリをセットアップしています。

現在、ユーザーはログインしてテキスト ファイルを S3 にアップロードできます。その後、Rails は AWS から直接データをリクエストし、それを処理のために Highcharts に渡します。ただし、ユーザーは現在、アップロードされたすべてのデータを見ることができます。

ユーザーとそれぞれのアップロードされたオブジェクトとの間の関係をセットアップする方法がわかりません。ユーザーがアップロードしたデータのみを表示できるように、S3 内でデータを「スコープ」する最良の方法は何ですか? これは AWS ACL を介して行われると思いますか?

4

1 に答える 1

1

S3 バケット ACL は、こちら に記載されているように、AWS アカウントへのバケット アクセスと匿名リクエスト全体を制御するように設計されています。そのため、ACL がユース ケースで機能するとは思いません。

より良い解決策は、IAM ポリシーです。ここでのアイデアは、アプリに登録されているすべてのアカウントに対して新しい IAM ユーザーを作成することです。これは、簡単にプログラムで行うことができます。次に、account_id などの行に沿ってバケットの名前空間を分割します。

s3://mybucket/account1/
s3://mybucket/account2/
s3://mybucket/account3/
...

アカウントの作成時に、そのアカウントのフォルダーのみにRW アクセスを許可する IAM ポリシーを構築します。

あなたのユースケースで実際にこれを試したことはありませんが、うまくいくと確信しています。IAM も無料で利用でき、その API は、Amazon リソースがどのように命名されているかを理解すれば、簡単に使用できます。詳細については、API ドキュメント を参照してください。

于 2013-05-08T19:15:28.330 に答える