2015-10-19 1201 views
3

從幾天前我收到這個異常,當我嘗試將文件推送到我的S3Bucket。 Ealier似乎都能正常工作,我相信我身邊沒有任何代碼變更。com.amazonaws.services.s3.model.AmazonS3Exception:Forbidden(服務:Amazon S3;狀態碼:403;錯誤代碼:403禁止;請求ID:XXXXXXXX)

com.amazonaws.services.s3.model.AmazonS3Exception: Forbidden 
(Service: Amazon S3; Status Code: 403; Error Code: 403 Forbidden; 
Request ID: XXXXXXXXXXXX), 
S3 Extended Request ID: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1077) 
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:725) 
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:460) 
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:295) 
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3699) 
at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:999) 
at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:977) 

.... ....

我遇到有關com.amazonaws.services.s3.model.AmazonS3Exception很多這樣的Q傳來:禁止下列那些

  1. 我在我的服務器上安裝了NTP來解決與時間有關的問題。
  2. 我還添加了「AmazonS3Client」對象的endPointUrl代碼,我覺得可能會解決我的問題。

什麼我可以嘗試解決這個問題

我使用AWS-Java的SDK:1.9.10推送文件到S3桶。

+0

您是否已驗證您的訪問密鑰仍可訪問S3資源,特別是該存儲區? – gregwhitaker

+0

是的,我確定我的密鑰和祕密有效 –

+0

您是否通過嘗試使用AWS CLI執行相同的操作來驗證過? – gregwhitaker

回答

0

很可能您的實例尚未使用可訪問S3的IAM實例配置文件角色啓動。

對AWS服務的所有訪問都必須使用訪問密鑰和祕密進行簽名。當您從本地計算機執行此操作時,DefaultCredentialsProviderChain將使用您的.aws/credentials文件中定義的訪問密鑰和密鑰。

當您在AWS中啓動EC2實例時,它還需要對服務請求進行簽名,如s3。但是,它通過從內部元數據服務中檢索憑據來執行此操作。

因此,您要做的是創建一個IAM配置文件,您的實例在啓動時將採用該配置文件。與用戶的其他IAM配置文件一樣,此IAM配置文件定義實例有權訪問的內容。

http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html

0

在我的情況桶的名字是在機器人側不同(斗的名字是「A」,在S3,我在Android的一側進入「AB」),通過改變鬥名,反之亦然,我解決問題。