2017-12-18 11 views
1

Kinesis Firehoseに向かうKinesis Streamを通じてデータ(レコード)を処理しており、S3バケットのファイルにデータを出力しています。CloudFormationのAWS Kinesisにラインセパレータを追加する方法は?

現在のところ、すべてのレコードは出力ファイル内の同じ行にありますが、各レコードはそれぞれの行に分かれていなければなりません。

代わりのようなもの:私たちのCloudFormationテンプレートです。ここ

Store1, 100, BroccoliStore1, 101, AvocadoStore1, 102, Apple 

:ように我々が行区切りを追加することができますどのように

Resources: 
    MyBucket: 
    Type: AWS::S3::Bucket 

    MyStream: 
    Type: AWS::Kinesis::Stream 
    Properties: 
     Name: my-stream 
     RetentionPeriodHours: 24 
     ShardCount: 5 

    MyFirehose: 
    Type: AWS::KinesisFirehose::DeliveryStream 
    Properties: 
     DeliveryStreamName: my-firehose 
     DeliveryStreamType: KinesisStreamAsSource 
     KinesisStreamSourceConfiguration: 
     KinesisStreamARN: 
      Fn::Sub: "${MyStream.Arn}" 
     RoleARN: 
      Fn::Sub: "${MyRole.Arn}" 
     S3DestinationConfiguration: 
     BufferingHints: 
      IntervalInSeconds: 60 
      SizeInMBs: 50 
     CompressionFormat: UNCOMPRESSED 
     Prefix: concessions/ 
     BucketARN: 
      Fn::Sub: "${MyBucket.Arn}" 
     RoleARN: 
      Fn::Sub: "${MyRole.Arn}" 

Store1, 100, Broccoli 
Store1, 101, Avocado 
Store1, 102, Apple 

それが現在のように見えますレコードはそれぞれの行に表示されますか?

+0

を参照してください。個々の記録。 [documentation](http://docs.aws.amazon.com/firehose/latest/dev/basic-deliver.html)から、CloudFormationでこれを行う方法に関する情報はありません –

答えて

0

あなたのキネシスストリームに餌を与えている人は、最後に「\ n」を追加する必要があります。以下 を参照してくださいJavaの例:

PutRecordRequest putRecordRequest = new PutRecordRequest(); 
putRecordRequest.setFirehoseName("incoming-stream"); 

String data = "some data" + "\n"; // add \n as a record separator 
Record record = new Record(); 
record.setData(ByteBuffer.wrap(data.getBytes(StandardCharsets.UTF_8))); 

putRecordRequest.setRecord(record); 
firehoseClient.putRecord(putRecordRequest); 

はあなたに届けS3オブジェクトを分割できるように、キネシス消防ホースにそれを送信する前に、「あなたは、各レコードの末尾にレコードセパレータを追加することもできsource.

関連する問題