Nic*_*Nic 5 amazon-s3 amazon-web-services amazon-cloudwatchlogs amazon-kinesis-firehose
我正在使用 Kinesis Firehose 将应用程序日志从 CloudWatch Logs 复制到 S3 存储桶中。
然而,这个流程有一个问题。我经常注意到 Lambda 转换函数会失败,因为输出数据超出了Lambda 同步调用的6 MiB 响应负载限制。发生这种情况是有道理的,因为输入被压缩但输出未被压缩。这样做似乎是在 S3 中的结果对象上正确设置文件扩展名和 MIME 类型的唯一方法。
有什么方法可以将未压缩的输入传递给 Lambda 转换函数吗?
这将对齐输入/输出大小。我已经尝试减少 Firehose 传输流上的缓冲区大小,但缓冲区大小限制似乎是针对压缩数据,而不是原始数据。
不,似乎无法更改 CloudWatch Logs 的输入是否被压缩。CloudWatch Logs 始终将 GZIP 压缩的有效负载推送到 Kinesis 流上。
如需确认,请查看 CloudWatch Logs 换行处理程序的 AWS 参考实现kinesis-firehose-cloudwatch-logs-processor。该处理程序接受 GZIP 压缩的输入并返回解压缩的消息作为输出。为了解决 6 MiB 限制并避免body size is too long错误消息,引用处理程序将输入分为两部分:适合 6 MiB 限制的有效负载和其余部分。使用 将剩余部分重新插入到 Kinesis 中PutRecordBatch。
| 归档时间: |
|
| 查看次数: |
4438 次 |
| 最近记录: |