代码之家  ›  专栏  ›  技术社区  ›  Costa Michailidis

如何为Lambda筛选AWS日志以仅查看console.logs

  •  0
  • Costa Michailidis  · 技术社区  · 6 年前

    我正在使用 aws logs filter-log-events --log-group-name /aws/lambda/lambda-name --region us-east-1 从lambda那里获取日志,但是返回的日志非常。。。。广泛的。 例如:

    {
      "ingestionTime": *, 
      "timestamp": *, 
      "message": "START RequestId: * Version: $LATEST\n", 
      "eventId": "*", 
      "logStreamName": "2018/10/26/[$LATEST]*"
    }... 
    

    1 回复  |  直到 6 年前
        1
  •  3
  •   jmp    6 年前

    获取 filter-log-events jq . 下面是我在windows powershell中所做的一个示例。

    aws logs filter-log-events --log-group-name <yourLogGroup> --region <yourRegion> | jq '.events[].message'

    --filter-pattern here

    如果命令需要获取最后几天的时间,可以使用 --start-time --end-time filter log events命令的参数。

    为了实时订阅CloudWatch日志,项目可以使用 put-subscription-filter 命令将日志写入另一个Lambda函数以进行处理。下面是nodejs中的一个函数示例:

    https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/SubscriptionFilters.html#LambdaFunctionExample

    var zlib = require('zlib');
    exports.handler = function(input, context) {
        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('ascii'));
                console.log("Event Data:", JSON.stringify(result, null, 2));
                context.succeed();
            }
        });
    };