如何在 CloudFormation 中的 AWS Kinesis 中添加行分隔符?

Lou*_*uis 3 aws-cloudformation amazon-kinesis-firehose

我们通过 Kinesis Stream 处理数据(记录)到 Kinesis Firehose,然后将数据输出到 S3 存储桶中的文件。

然而,目前,所有记录都位于输出文件中的同一行,但我们希望将每个记录分开,以便它们位于自己的行上。

而不是类似的东西:

Store1, 100, Broccoli
Store1, 101, Avocado
Store1, 102, Apple
Run Code Online (Sandbox Code Playgroud)

目前看起来像:

Store1, 100, BroccoliStore1, 101, AvocadoStore1, 102, Apple
Run Code Online (Sandbox Code Playgroud)

这是我们的 CloudFormation 模板:

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}"
Run Code Online (Sandbox Code Playgroud)

我们如何添加行分隔符以使记录显示在自己的行上?

Eyt*_*ror 5

谁在为您的运动流提供数据,应该在末尾添加“\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);
Run Code Online (Sandbox Code Playgroud)

参见来源。