我正在使用AWS Kinesis Firehose通过Ruby AWS SDK将15分钟的快照数据记录到S3存储桶中。
每一次,我都会从Firehose那里得到传送到S3的记录,如下所示:
{"data":"{\"object_type\": \"foo_bar\", \"body\": {\"id\":\"80c2944f-475d-47fb-9817-0fe4eb099c8b\",\"created_at\":\"2016-01-08T17:09:26.491-10:00\",\"updated_at\":\"2018-07-28T03:29:57.274-10:00\",\"deleted\":false,\"name\":\"Foo Bar\",\"username\":\"fbar\",\"email\":\"\",\"status\":\"Active\"}, \"meta\": {\"sent_at\": \"2018-07-28T13:30:13.127Z\",\"env\": \"production\"}}\n"}{"object_type": "foo_bar", "body": {"id":"0c82a25d-f9e0-4933-8d79-278a18c4c862","created_at":"2016-08-25T14:15:40.601-10:00","updated_at":"2018-07-28T03:29:59.060-10:00","deleted":false,"name":"Bar Foo","username":"bfoo","email":"","status":"Active"}, "meta": {"sent_at": "2018-07-28T13:30:15.386Z","env": "production"}}
如您所见,发送到records
调用的put_record_batch
参数的数据数组尚未转义。我尝试通过Firehose手动重新发送相同的数据,并且效果很好,我时常会遇到这种麻烦(我在分阶段和产品环境中都看到过)。如您所见,未取消转义的数据也会影响下一条记录,因此,如果这些数据坏了就重新发送就不容易了。
任何人都有想法为什么会如此零星地发生吗?
编辑:上面示例中的两条记录是在两个单独的put_record_batch
请求中写入Firehose的。第一条记录未正确释放,第二条记录未正确释放。因此,由于未转义,第二条记录被串联到第一条记录的末尾,/n
没有任何作用。