我大概可以使用以下命令从CloudWatch logStream获取所有日志事件:
const cwl = new AWS.CloudWatchLogs();
cwl.getLogEvents({logGroupName, logStreamName}, (err, results) => {
for (let r of results.events) {
console.log(r.message);
}
});
但是,我的问题是-有没有一种方法可以使流日志而不是一次读取所有日志?似乎对于某些日志流而言,可能有上百万个事件/记录,因此可能有太多数据无法一次读取?
我查看了cloudwatchlogs.d.ts的声明文件: https://github.com/aws/aws-sdk-js/blob/master/clients/cloudwatchlogs.d.ts
看不到任何可以将日志流式传输到客户端的东西。
答案 0 :(得分:1)
您不能直接流式传输。
来自18.07.19 05:41:05 Information
18.07.19 05:43:48 Something
18.07.19 05:20:48 Text
18.07.19 01:16:45
API的响应包含getLogEvents
和nextForwardToken
。如果未在单个响应中返回所有事件,则可以在后续请求中使用这些事件来获取下一批事件。看到这里:https://docs.aws.amazon.com/cli/latest/reference/logs/get-log-events.html
或者,您可以使用nextBackwardToken
API将数据获取到S3并从那里流式传输。不确定导出的数据是否为可流式格式。 https://docs.aws.amazon.com/cli/latest/reference/logs/create-export-task.html