2016-12-12 87 views
1

我使用AmazonS3Client從AWS SDK的Java在66年1月11日版本S3檢查鍵值存在返回true:AWS SDK爲不存在的S3鍵檢查時拋出403,但對於現有的密鑰

s3client.doesObjectExist(bucketName, key); 

如果我給它一個現有的密鑰名稱,它會正確返回true。對於不存在的密鑰,我總是會得到一個AmazonS3Exception,通知我有關從API返回的403。

我必須改變什麼使它返回false

該服務的IAM策略看起來是這樣的:

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

這可以幫助你,我猜:https://github.com/aws/aws-sdk-ruby/issues/201 – Nagaraddi

回答

3

好像你已經授予權限的對象,而不是桶。您的政策應該允許列出存儲分區。嘗試在政策指定桶名稱:

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

MY_BUCKET代替MY_BUCKET/*

+1

具體來說,''行動「:[」s3:ListBucket「]'。 –

+0

我其實需要兩個,MY_BUCKET,MY_BUCKET/* – EagleBeak