Как я могу получить содержимое журнала в AWS Lambda от Cloudwatch - PullRequest
0 голосов
/ 14 сентября 2018

У меня есть базовая лямбда, которая отправляет изображение на веб-сервер. Из событий в CloudWatch я могу успешно регистрировать все, что происходит в этой лямбда-функции:

enter image description here

В этой группе журналов (лямбда-функция) я нажал Stream to AWS Lambda, выбрал новую лямбда-функцию, в которой я ожидаю получать свои журналы, и вообще не устанавливал никаких фильтров, чтобы я мог получить все журналы.

Лямбда запускается правильно, но дело в том, что когда я сохраняю то, что получил в объектах event и context, у меня есть вся информация о потоке журналов CloudWatch, но я не вижу ни одного из журналов.

Что я получаю:

enter image description here

Нужно ли , чтобы указать фильтр, чтобы я вообще мог видеть какие-либо журналы? Потому что в разделе фильтра, если я не ставлю какие-либо фильтры и нажимаю на тестовый фильтр, я получаю все журналы в окне предварительного просмотра, что, по-видимому, означает, что оно должно отправлять все журналы в мою функцию Lambda. Кроме того, он посмотрел мне журналы, где этот нечитаемый поток в AWSLogs и что он был в Base64, но не получил никаких результатов, пытаясь преобразовать это.

1 Ответ

0 голосов
/ 14 сентября 2018

Да, логи распакованы и закодированы в base64, как указано в jarmod.

Пример кода в NodeJ для извлечения того же самого в лямбде будет:

var zlib = require('zlib');
exports.handler = (input, context, callback) => {
    var payload = new Buffer(input.awslogs.data, 'base64');
    zlib.gunzip(payload, function(e, result) {
        if (e) { 
            context.fail(e);
        } else {
            result = JSON.parse(result.toString());
            console.log(result);
        }
    });
...