2016-12-20 12 views
0

S3バケットにアップロードするJS SDKを使用する場合は、次のポリシーが機能:ファイルをs3にアップロードするためにはどのポリシーアクションを許可する必要がありますか?

{ 
 
    "Version": "2012-10-17", 
 
    "Statement": [ 
 
     { 
 
      "Effect": "Allow", 
 
      "Action": [ 
 
       "s3:*" 
 
      ], 
 
      "Resource": [ 
 
       "arn:aws:s3:::foo/*" 
 
      ] 
 
     } 
 
    ] 
 
}

が、よりきめ細かく

{ 
 
    "Version": "2012-10-17", 
 
    "Statement": [ 
 
     { 
 
      "Effect": "Allow", 
 
      "Action": [ 
 
       "s3:PutObject", 
 
       "s3:GetObject" 
 
      ], 
 
      "Resource": [ 
 
       "arn:aws:s3:::foo/*" 
 
      ] 
 
     } 
 
    ] 
 
}

を確保

はありません。オブジェクトをアップロードするのに必要なアクション権限がありますか?

+0

このポリシーで十分です。どんなAPIコールを試していますか?あなたが誤ってs3:ListBucket(または他のAPI呼び出し)を試みている可能性があります。それはあなたの誤りを説明するでしょう。 – spg

+0

@ Simon-Pierre私はaws-sdkのS3.upload()関数を使用しています:https://github.com/aws/aws-sdk-js/blob/23ae71e7da812d5603a8f4cc6126d6c6871cd6b4/lib/services/s3.js#L819 –

+1

aws-sdkのS3.upload()関数は、マルチパートアップロードを使用します。おそらく 's3:ListMultipartUploadParts'アクションがありません – spg

答えて

1

ポリシーは、バケットではなくオブジェクトに対して権限を付与します。これは動作するはずです:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:PutObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::foo/" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:GetObject" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::foo/*" 
      ] 
     } 
    ] 
} 

お知らせバケット(arn:aws:s3:::foo/)とオブジェクト(arn:aws:s3:::foo/*)との差。

関連する問題