从CloudWatch流日志数据

时间:2019-07-10 00:52:55

标签: http stream amazon-cloudwatch amazon-cloudwatchlogs

我大概可以使用以下命令从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

看不到任何可以将日志流式传输到客户端的东西。

1 个答案:

答案 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的响应包含getLogEventsnextForwardToken。如果未在单个响应中返回所有事件,则可以在后续请求中使用这些事件来获取下一批事件。看到这里: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