Kinesis Data Firehose 数据转换与压缩

0

【以下的问题经过翻译处理】 大家好,

我们正在基于CloudWatch Logs DestinationsKinesis Firehose 的解决方案上进行开发,以便能够将多个应用程序账户CloudWatch Logs集中到我们组织中的集中日志账户中,如下图所示,并在此处描述 here :

Enter image description here

我们使用Lambda FunctionFirehose Stream触发进行数据转换,然后将数据发送到最终目的地S3 Bucket

Lambda应该解压缩接收到的数据,处理它并将其发送回Firehose Stream“Base on Firehose Lambda Blueprint”

除了Kinesis Firehose Compression之外,一切都如预期那样工作,在Firehose目标设置上,我们已经启用了以GZIP格式压缩数据记录,但是我们在S3 Bucket上收到的是具有**.gz扩展名未压缩**文件!!

Enter image description here

对如何解决这个问题大家有什么想法吗?

Lambda是否应在处理数据记录并将其发送回Firehose Stream之前对其进行压缩,以及如何进行压缩?

提前感谢。

1 回答
0

【以下的回答经过翻译处理】 我找出了问题所在,就在使用Kinesis Firehose将对象写入S3时,它会在对象的元数据中添加一个key/value对: "Content-Encoding=gzip"。当我们在浏览器(UI)上请求下载S3中的对象时,这个key/value对会添加到response header中,这会导致浏览器自动解压缩该对象。最新的浏览器内置此功能,可以在下载时解压缩此类文件。因此,存储在S3存储桶中的文件具有正确的格式和压缩值,但当我们下载它时,浏览器会自动解压缩它,这是启用了GZIP压缩的Kinesis Firehose传递到S3的预期行为。

profile picture
专家
已回答 10 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则