数日前から、ファイルをS3Bucketにプッシュしようとすると、この例外が発生します。より簡単にすべてが機能しているようで、私の側からのコード変更はないと確信しています。
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に出くわしました:それらに従うことは禁じられています
この問題を解決するために私が試みることができる他の何か
ファイルをS3Bucketにプッシュするためにaws-Java-sdk:1.9.10を使用しています。
ほとんどの場合、インスタンスは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
私の場合、バケット名はAndroid side(バケット名はS3で 'a'で、Android side)で 'ab'と入力しました)バケット名とその逆、問題を解決しました。