以原始格式导出 Cloudwatch 日志

Exporting Cloudwatch logs in original format

我正在寻找一种将 CW 日志以其原始形式导出到 s3 的方法。我使用控制台从一个日志组中导出了一天的日志,似乎每行都添加了一个时间戳,打破了原来的 JSON 格式。我希望将其作为测试转换脚本的 json 文件导入胶水。使用的原始数据在导入到 cloudwatch 时被格式化为正常的 json 字符串,并且通常处理它看起来像的数据:

{ "a": 123, "b": "456", "c": 789 }

导出解压数据后的样子

2019-06-28T00:00:00.099Z { "a": 123, "b": "456", "c": 789 }

由于它不再是标准格式,因此无法将行读取为 json 字符串。

此 运行 的数据集相当大 (100GB+),并且将来可能会变得更大,因此 运行 将命令设置为 CLI 命令并在本地处理每一行并不是我认为可行。有什么已知的方法可以做我想做的事吗?

谢谢

当您将日志推送到 CloudWatch 时,会自动添加时间戳。 CloudWatch 中存在的所有日志事件都有时间戳。

您可以为 Kinesis Firehose 创建一个订阅过滤器,并在 Kinesis 上使用 lambda 函数来格式化日志事件(删除时间戳),然后将日志存储在 S3 中。

https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Subscriptions.html