2017-03-05 2 views
0

私は、次のS3構造:AWSポリシーの読み取りのために/バケット内のファイルへの書き込み

バケット名:テスト・バケット

ファイル:

test.jsonそして、私は次のようしているがAWSポリシー:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": "s3:PutObject", 
      "Action": "s3:GetObject", 
      "Action": "s3:DeleteObject", 
      "Action": "s3:ListBucket", 
      "Resource": "arn:aws:s3:::test-bucket" 
     } 
    ] 
} 

そして、この方針は、キーのアクセス権を持つユーザーに添付された123

私はこのようSDKを使用してテストバケツにtest.jsonを置くか、取得しよう:

BasicAWSCredentials awsCreds = new BasicAWSCredentials("123", "secretKeyId"); 
s3Client = AmazonS3ClientBuilder.standard() 
         .withCredentials(new AWSStaticCredentialsProvider(awsCreds)) 
         .withRegion("US-EAST-1") 
         .build(); 
s3Client.putObject(new PutObjectRequest("test-bucket", "test.json", file)); 

これが問題を否定アクセスできるようになります。

私は

"Resource": "*" 

にポリシーのリソースを変更する場合、それが動作します。私はちょうど私が入れたリソースが正しいフォーマットであることを確認したい。何が悪かったのか?

+1

タイプミス::のようなものに

"Resource": "arn:aws:s3:::test-bucket" 

'ListBucekt' - >' ListBucket' – Jeremy

+0

@Jeremyああそれはコピー&ペースト時のタイプミスです。 – jamesdeath123

答えて

1

バケツの横にもバケツの内容にアクセスしたいことをアマゾンに知らせる必要があります。

soからリソースを変更します。

"Resource": [ 
    "arn:aws:s3:::test-bucket", 
    "arn:aws:s3:::test-bucket/*" 
] 
関連する問題