从云观察流式传输日志数据



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

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

您无法直接流式传输它。

来自 API getLogEvents响应包含 nextForwardTokennextBackwardToken 。您可以在后续请求中使用这些事件来获取下一批事件,如果无法在单个响应中返回所有事件。看这里: https://docs.aws.amazon.com/cli/latest/reference/logs/get-log-events.html

或者,您可以使用 createExportTask API 将数据导入 S3 并从那里流式传输。不确定导出的数据是否为可流式传输格式。https://docs.aws.amazon.com/cli/latest/reference/logs/create-export-task.html

最新更新