Поток данных журнала из CloudWatch - PullRequest
1 голос
/ 10 июля 2019

Я могу предположительно получить все события журнала из 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 Ответ

1 голос
/ 18 июля 2019

Вы не можете транслировать его напрямую.

Ответы от getLogEvents API содержат nextForwardToken и nextBackwardToken.Вы можете использовать их в последующих запросах, чтобы получить следующий пакет событий, если все они не могли быть возвращены в одном ответе.См. Здесь: 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

...