首页 > 解决方案 > aws lambda:如何从真实请求(非测试)中获取 console.log 日志?

问题描述

我已阅读此文档:https ://docs.aws.amazon.com/en_us/lambda/latest/dg/nodejs-prog-model-logging.html并制作了这个 lambda:

exports.handler = async (event) => {
    // TODO implement
    // const response = {
    //     statusCode: 200,
    //     body: JSON.stringify('Hello from Lambda!'),
    // };
    console.log(123321);
    console.log(event.Records[0].cf.response);
    console.log(event.Records[0].cf.request);
    console.log(JSON.stringify(event.Records[0].cf));
    console.log(event);
    console.log(arguments);

    //Get contents of response
    const response = event.Records[0].cf.response;
    //Return modified response

    return response;
};

当我将“测试”与假模型一起使用时,它可以工作(日志发送到 CloudWatch),但是当我添加 CloudFront 触发器并发送请求时,日志不会发送到任何 CloudWatch。

Lambda 函数配置

  1. 如何event从 lambda 获取真实(来自生产)对象
  2. 如何从 CloudFront 触发的 lambda 发送/获取日志?

标签: amazon-web-servicesamazon-cloudfrontamazon-cloudwatch

解决方案


由于 Lambda 是由 CloudFront 触发的,它现在变成了 Lambda@Edge,因此 CloudWatch 日志流创建在调用 Lambda 实例的区域(由 CloudFront 决定)。

因此,按照AWS Lambda@Edge Docs for Troubleshooting,可以使用提供的 shell 脚本轻松确定特定区域。

您可以使用标题处的下拉菜单切换区域: 在此处输入图像描述


推荐阅读