2017-05-07 11 views
0

私は何らかのソースからデータを取得していますが、これをKinesis Firehose配信ストリームに渡したいとします。 amazonKinesisFirehoseClient.putRecord(putRecordRequest);で「ステータスコード:400;エラーコード:UnknownOperationException」が表示されています。Kinesis FirehoseクライアントのputRecord throw UnknownOperationException

私のコード

while (data != null) { 
     PutRecordRequest putRecordRequest = new PutRecordRequest();  
     putRecordRequest.setDeliveryStreamName("xxxxxxxxxx"); 
     String line = data + "\n"; 
     System.out.println("Data ---------> " + line); 
     com.amazonaws.services.kinesisfirehose.model.Record recordData = createRecord(line); 
     putRecordRequest.setRecord(recordData); 
     System.out.println("Inside single row transfer 2222222222 --------------------"); 

     // Put record into the DeliveryStream 
     amazonKinesisFirehoseClient.putRecord(putRecordRequest); 
     System.out.println("Endddddd single row transfer --------------------"); 
} 

出力

Inside single row transfer 111111111 -------------------- 

Data --------->{"name":"xxxxxxxx","id":xxx,"address":xxxxxxxx,"phoneNumber":"xxxxxxxxxx","age":xx} 

Inside single row transfer 2222222222 -------------------- 

com.amazonaws.services.kinesisfirehose.model.AmazonKinesisFirehoseException:null (Service: AmazonKinesisFirehose; Status Code: 400; Error Code: UnknownOperationException; Request ID: a084lc4-a0ed-7f9a-a14a-867sdw23wr68) 
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.handleErrorResponse(AmazonHttpClient.java:1588) 
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeOneRequest(AmazonHttpClient.java:1258) 
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeHelper(AmazonHttpClient.java:1030) 
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.doExecute(AmazonHttpClient.java:742) 
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.executeWithTimer(AmazonHttpClient.java:716) 
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.execute(AmazonHttpClient.java:699) 
at com.amazonaws.http.AmazonHttpClient$RequestExecutor.access$500(AmazonHttpClient.java:667) 
at com.amazonaws.http.AmazonHttpClient$RequestExecutionBuilderImpl.execute(AmazonHttpClient.java:649) 
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:513) 
at com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehoseClient.doInvoke(AmazonKinesisFirehoseClient.java:895) 
at com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehoseClient.invoke(AmazonKinesisFirehoseClient.java:871) 
at com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehoseClient.executePutRecord(AmazonKinesisFirehoseClient.java:640) 
at com.amazonaws.services.kinesisfirehose.AmazonKinesisFirehoseClient.putRecord(AmazonKinesisFirehoseClient.java:616) 
at com.cloudwick.capstone.project.PersonDetailsRecordProcessor.processRecord(PersonDetailsRecordProcessor.java:142) 
at com.cloudwick.capstone.project.PersonDetailsRecordProcessor.processRecords(PersonDetailsRecordProcessor.java:57) 
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.V1ToV2RecordProcessorAdapter.processRecords(V1ToV2RecordProcessorAdapter.java:42) 
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.callProcessRecords(ProcessTask.java:215) 
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.ProcessTask.call(ProcessTask.java:170) 
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:49) 
at com.amazonaws.services.kinesis.clientlibrary.lib.worker.MetricsCollectingTaskDecorator.call(MetricsCollectingTaskDecorator.java:24) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

私はキネシス消防ホースを接続するためのすべての私の資格情報が正しいかなり確信しています。私は事前に

おかげで私のS3と同様キネシス消防ホースにマッピングされた赤方偏移)を持っている:)

答えて

0

私はhttps://kinesis.us-east-1.amazonaws.comの代わりhttps://firehose.us-east-1.amazonaws.comを使用するようにエンドポイントを設定したとき、私はこのようなエラーを見てきました。それが役立つかどうかを確認するように設定してみてください。あなたはそれをサポートするSDKのバージョンにしている場合

また、あなたが間違ったエンドポイントを使用しないようにAmazonKinesisFirehoseClientBuilderを使用して、地域の文字列を設定することができます。

AmazonKinesisFirehose firehoseClient = AmazonKinesisFirehoseClientBuilder 
    .standard() 
    .withRegion("us-west-2") 
    .build() 
関連する問題