2016-06-30 13 views
2

私はPlayフレームワーク2.5とaws-java-sdkバージョン1.11.12を使用しています。特定の地域のS3バケットを作成するように呼びかけており、わからないエラーが発生しています。それは、私がcreateBucket呼び出しに渡しているにもかかわらず、リージョンが間違っていて、私たちが西側2でなければならないことを私に伝えます。誰かが助けてくれますか?再生、アマゾンS3作成バケット呼び出し承認ヘッダーは正しく指定されたときに不正な形式の不正な領域です

@Inject 
public AmazonS3ComponentImpl(Configuration configuration) { 
    String accessKey = configuration.getString(AWS_ACCESS_KEY); 
    String secretKey = configuration.getString(AWS_SECRET_KEY); 
    amazonS3Bucket = configuration.getString(AWS_S3_BUCKET); 

    if ((accessKey != null) && (secretKey != null)) { 
    AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey); 
    amazonS3 = new AmazonS3Client(awsCredentials); 

    try { 
     amazonS3.createBucket(amazonS3Bucket, Region.US_West_2); 
    } catch (AmazonS3Exception e) { 
     if (e.getErrorCode().compareTo("BucketAlreadyOwnedByYou") != 0 
     && e.getErrorCode().compareTo("AccessDenied") != 0) { 
     throw e; 
     } 
    } finally { 
     Logger.info("Using bucket " + amazonS3Bucket); 
    } 
    } 
} 

エラー:

Caused by: com.amazonaws.services.s3.model.AmazonS3Exception: The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'us-west-2' (Service: Amazon S3; Status Code: 400; Error Code: AuthorizationHeaderMalformed; Request ID: 261B779D23D15F6F) 
at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1372) 
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:919) 
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:697) 
at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:449) 
at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:411) 
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:360) 
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3962) 
at com.amazonaws.services.s3.AmazonS3Client.createBucket(AmazonS3Client.java:908) 
at com.amazonaws.services.s3.AmazonS3Client.createBucket(AmazonS3Client.java:855) 
at com.zently.modules.AmazonS3ComponentImpl.<init>(AmazonS3Component.java:42) 
+1

['amazonS3.setRegion'](http://docs.aws.amazon.com/AWSSdkDocsJava/latest/DeveloperGuide/java-dg-region-selection.html)を使用して、実際に使用されている領域を設定しましたかクライアントオブジェクト?エラーは、バケット属性ではなく、リクエストで送信された認可ヘッダーを参照します。デフォルトはus-east-1です。 –

+0

トリックをしたおかげで@マイケルsqlbot。 –

答えて

2

右トリックをした新しいAmazonS3Clientを作成した後、次のコード行を追加します。

amazonS3.setRegion(com.amazonaws.regions.Region.getRegion(Regions.US_WEST_2)); 
0

バケット名が指定された領域に既に存在する場合、このエラーが発生することがあります。他のバケット名、たとえば "yournamebucket"(通常は一意)を与えてみてください。私はこのようにして、それは私のために働いた。

関連する問題