2016-11-12 20 views
1

ここに例を示すことにより、Uploading Photos to Amazon S3 from a Browser私のブラウザからS3バケットにファイルをアップロードできます。私は、私がアクセス拒否エラーを取得次の文をaddeingすることにより、より具体的にはポリシーを変更しようとしたときただし、:AWS S3ポリシーのワイルドカード( "*")は動作しますが、 "s3:GetObject"、 "s3:PutObject"などはありません

{ 
     "Effect": "Allow", 
     "Action": [ 
      "*" 
     ], 
     "Resource": [ 
      "arn:aws:s3::[MY_BUCKET]/${cognito-identity.amazonaws.com:sub}", 
      "arn:aws:s3:::[MY_BUCKET]/${cognito-identity.amazonaws.com:sub}*" 
     ] 
    } 

{ 
     "Effect": "Allow", 
     "Action": [ 
      "s3:GetObject", 
      "s3:PutObject", 
      "s3:DeleteObject" 
     ], 
     "Resource": [ 
      "arn:aws:s3:::[MY_BUCKET]/${cognito-identity.amazonaws.com:sub}", 
      "arn:aws:s3:::[MY_BUCKET]/${cognito-identity.amazonaws.com:sub}*" 
     ] 
    } 

をただし、次の文は私がバケットにアップロードすることができません

フェデレーションログインを使用してユーザーにログインし、AWS IDプールに配置しています。上記のコードを含むポリシーは、アイデンティティプールのAuthenticatedロールによって想定されています。このアイデンティティIDがアイデンティティプールに存在することを確認しました。すべての私の研究は私が私の行動でより具体的にできるはずだから私はここで何がうまくいかないのか分かりません。

編集:私はファイルが最初の場所でバケツに入った方法を知っておくと便利かもしれません実現

ACL: 'public-read' 

ドキュメントはこれに明確なではありません:これはあなたのアップロードコードに

return new Promise(function (resolve, reject) { 
     const fileName = userId + '/' + utilities.getGUID(); 
     s3.upload({ 
      Key: fileName, 
      Body: file, 
      ACL: 'public-read' 
     }, function (err, data) { 
      if (err) { 
       dropzoneUtilities.setDropzoneFileCanceled(file); 
       console.log(err); 
       reject(err); 
      } 
      else { 
       dropzoneUtilities.setDropzoneFileComplete(file); 
       dropzoneUtilities.removeFile(file); 
       resolve({ data, name: file.name}); 
      } 

     }); 
    }); 

答えて

0

注:私はバケットに画像ファイルをアップロードするには、NPMからAWS-SDKと次のコードを使用していますこれを含めるには、​​権限が必要です。 "S3:PutObjectAcl" を追加

http://docs.aws.amazon.com/AmazonS3/latest/dev/using-with-s3-actions.html#using-with-s3-actions-related-to-objects

+0

はトリックをしました。ありがとうございました。私はAmazonのAWSの例の1つから「public-read」を取り上げました。残念なことに、特に "authenticated-read"オプションに関係しているので、それが意味することについては、まだまだ良い文書が見つかりませんでした。一般の読書に問題はありますか?私が "authenticated-read 'rs"を使ってアップロードしたものは、アクセスが拒否されます。 – reggie3

+0

'public-read'は、URLがオブジェクトをダウンロードできることを知っている誰かを意味します。オブジェクトはパブリックであり、ダウンロードするための認証は必要ありません。誰かがオブジェクトをダウンロードできるようにするには、これがあなたが望むオプションです。 –

+0

これは、Cognito Identity Poolに関連付けられたログインのみがバケット内のファイルを表示およびダウンロードできるようにするために必要な権限ですか?それはそうでないように思われる。 – reggie3

関連する問題