2015-10-03 4 views
7

RubyでS3を使用してAmazon Webサービスにファイルをアップロードする方法について知りました。私は最近、次のエラーに直面しました:AWS::S3::Errors::AccessDenied Access Denied。 googleで調べてみると、私はエラーでthis postを見つけました。バケットポリシーはweb-app経由でのアクセスを許可するには十分ではなく、ユーザーには「管理者アクセス権」も与えなければならないと主張しています。アクセスがPaperclipで拒否されました

私はこれを試してみましたが、うまくいきましたが、私が読んだ他のドキュメントでは管理者のアクセスが記述されていないことを前提にしています。私はaws-sdk gemを使用しています。誰でも管理者アクセスが必要かどうかを判断できますか?どうもありがとう!

+0

'管理Access'はこれを達成するためにあなたが本当に必要はありません。

は、ここで私はペーパークリップが:public_read許可を得てオブジェクトを置くことができるように使用している完全なS3バケットポリシーです。 heroku configにAWS 'access_key_id'と' secret_access_key'の設定がありますか?ユーザーアカウントにIAMコンソールで「アクセスポリシー」が設定されていることを確認するだけです。詳細はこちらをご覧ください:https://github.com/thoughtbot/paperclip/wiki/Paperclip-with-Amazon-S3 –

+0

@KMRakibulIslam返信ありがとうございます!私は実際にはまだこれをHerokuで試していません。私はちょうど私のローカルホストから働いています。私はIAMコンソールに必要な "アクセスポリシー"がないと思う。ユーザーにどのポリシーを割り当てる必要がありますか? 'AmazonsS3FullAccess? ' – neanderslob

+0

ええ、それはうまくいくはずです。 –

答えて

4

これを実現するには、実際にはAdmin Accessは必要ありません。 herokuの設定にAWS access_key_idsecret_access_keyが設定されていることを確認してください。また、AWS IAM Consoleでユーザアカウントの設定がAccess Policyになっていることを確認する必要があります。

詳細はthis postを参照してください。

バケットをプライベートに指定しない限り、Paperclipのデフォルトのアクセス許可は:public_readです。

Module: Paperclip::Storage::S3

+1

ユーザーのためにAmazonS3FullAccessの設定を終了し、それは魅力的なように機能しました。私が他のバケットと分割していた場合は、カスタムバージョンを作成してより正確にポリシーを磨くことができると判断しましたが、これは今のところ機能します。ありがとう! – neanderslob

+0

素晴らしいですね!ありがとう:) –

6

としては受け入れ答えで説明については、あなたが「管理者アクセス」を必要はありません、これを参照してください。しかし、アマゾンによって与えられたいくつかの例で文書化されているように、バケツへのアクセスを与える典型的なポリシーは、ペーパークリップにとっては十分ではありませんでした。

次のポリシーは、私の仕事:既存の回答の

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:GetBucketLocation", 
       "s3:ListAllMyBuckets" 
      ], 
      "Resource": "arn:aws:s3:::*" 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::bucket-name-to-be-set-by-you" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": "s3:*", 
      "Resource": [ 
       "arn:aws:s3:::bucket-name-to-be-set-by-you/*" 
      ] 
     } 
    ] 
} 
6

どれも実際にあなたが付与する必要があるポリシーを述べるないので、ここではそれらは:s3:DeleteObjects3:PutObject、および​​。

{ 
    "Version": "2008-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "arn:aws:iam::IAM_USER_ID:user/IAM_USER_NAME" 
      }, 
      "Action": [ 
       "s3:PutObject", 
       "s3:DeleteObject", 
       "s3:PutObjectAcl" 
      ], 
      "Resource": "arn:aws:s3:::S3_BUCKET_NAME/*" 
     } 
    ] 
} 
関連する問題