2016-12-14 11 views
2

私は、次の400不正な要求エラーを絞り込むしようとしています:AWS S3 400不正な要求

com.amazonaws.services.s3.model.AmazonS3Exception: Bad Request (Service: Amazon S3; Status Code: 400; Error Code: 400 Bad Request; Request ID: 7FBD3901B77A07C0), S3 Extended Request ID: +PrYXDrq9qJwhwHh+DmPusGekwWf+jmU2jepUkQX3zGa7uTT3GA1GlmHLkJjjjO67UQTndQA9PE= 
    at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpClient.java:1343) 
    at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:961) 
    at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:738) 
    at com.amazonaws.http.AmazonHttpClient.doExecute(AmazonHttpClient.java:489) 
    at com.amazonaws.http.AmazonHttpClient.executeWithTimer(AmazonHttpClient.java:448) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:397) 
    at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:378) 
    at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:4039) 
    at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1177) 
    at com.amazonaws.services.s3.AmazonS3Client.getObjectMetadata(AmazonS3Client.java:1152) 
    at com.amazonaws.services.s3.AmazonS3Client.doesObjectExist(AmazonS3Client.java:1212) 
    at com.abcnews.apwebfeed.articleresolver.APWebFeedArticleResolverImpl.makeS3Crops(APWebFeedArticleResolverImpl.java:904) 
    at com.abcnews.apwebfeed.articleresolver.APWebFeedArticleResolverImpl.resolve(APWebFeedArticleResolverImpl.java:542) 
    at sun.reflect.GeneratedMethodAccessor62.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.xfire.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:54) 
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler.sendMessage(ServiceInvocationHandler.java:322) 
    at org.codehaus.xfire.service.binding.ServiceInvocationHandler$1.run(ServiceInvocationHandler.java:86) 
    at java.lang.Thread.run(Thread.java:662) 

私はこれほどのimple何かテストしている:

boolean exists = s3client.doesObjectExist("aws-wire-qa", "wfiles/in/wire.json"); 

は私が手動で追加しましたwfiles/in/wire.jsonファイル。私はローカルのアプリケーションの中でこの行を実行すると、私は真実に戻ります。しかし、別のリモートサービスの内部では、上記のエラーがスローされます。ローカルのアプリケーションで使用するのと同じ資格情報をサービス内で使用します。私はバケツを "Enable website hosting"として設定しましたが、違いはありません。

Grantee: Any Authenticated AWS User 
y List 
y Upload/DeleteView 
y PermissionsEdit Permissions  

は、だから私は、エラーがバケットのポリシーを持っていないに関係すると考えていたとGET/PUT/DELETEのオブジェクトのためのバケット上のポリシーファイルを作成したが、私はよ: 私の権限は次のように設定されていますそれでも同じエラーが発生します。私の方針は次のようになります:

{ 
"Version": "2012-10-17", 
"Id": "Policy1481303257155", 
"Statement": [ 
    { 
     "Sid": "Stmt1481303250933", 
     "Effect": "Allow", 
     "Principal": { 
      "AWS": "arn:aws:iam::755710071517:user/law" 
     }, 
     "Action": [ 
      "s3:DeleteObject", 
      "s3:GetObject", 
      "s3:PutObject" 
     ], 
     "Resource": "arn:aws:s3:::aws-wire-qa/*" 
    } 
] 
} 

ファイアウォールやプロキシの問題ではないと言われました。他に何を試すことができますか?エラーは非常に非特異的です。そして、これまでは地方開発しか行っていなかったので、他に何ができないのか分かりません。ここで何か助けていただければ幸いです。

+2

これは権限とは関係ありません。間違ったS3地域にリクエストを送信している可能性があります。 –

+0

@ Michael-sqlbot:あなたは本当に正しいです、私は以前に別のバケットでテストしていて、地域を変更しないように管理していました。どうもありがとう!ターゲット上で右に! – user2917629

+0

パーミッションの問題は、 '403禁止されているはずですから... 'と簡単に除外されました...私はそれを修正してうれしいですが、正直言って、それは直感的な推測でした。要求応答。 Java SDKは、情報がそこにあるべきであり、より正当で有用な答えになるため、応答ヘッダーと本文にアクセスするメカニズムを提供していると考えています。 –

答えて

3
curl -XPUT 'http://localhost:9200/_snapshot/repo_s3' -d '{ 
     "type": "s3", 
     "settings": { 
     "bucket": "my-bucket", 
     "base_path": "/folder/in/bucket", 
     "region": "eu-central"  
     } 
}' 

私の場合は地域の問題でした!
私はelasticsearch.ymlから領域を削除し、コマンドで設定する必要がありました。私はYMLファイルから地域を削除しない場合は、弾性は、私は私のURLが間違っていたことを見てきましたフィドラーを使用して

Name: repository-s3 
Description: The S3 repository plugin adds S3 repositories 
Version: 5.2.2 
* Classname: org.elasticsearch.plugin.repository.s3.S3RepositoryPlugin 
+0

私の場合も領域エラーでしたが、.net例外が明確でないため、応答を表示するためにfiddlerを使用してください。 –

+0

私にとっては領域エラーですが、興味深いことに、ファイルはまだS3でうまく表示されました。 Go figure。 – d512

+0

リージョンエラー+1 –

0

(最新のS3-リポジトリプラグインで)起動しません。

私はServiceURLプロパティとconfigクラスを使用する必要はありませんでした。代わりに、このコンストラクタをクライアントに使用しました.3番目のパラメータとして地域を使用します。

 AmazonS3Client s3Client = new AmazonS3Client(
       ACCESSKEY, 
       SECRETKEY, 
       Amazon.RegionEndpoint.USEast1 
       ); 
関連する問題