首页 > 解决方案 > 为什么我在 CloudWatch 和 lambda 函数的控制台中看不到我的日志?

问题描述

我有 lambda 函数,但在 CloudWatch 的 console.log 中看不到我的日志。这里缺少什么?

'use strict';
exports.handler = (event, context, callback) => {
    
    //Get contents of response
    const response = event.Records[0].cf.response;
    const headers = response.headers;

//Set new headers 
 headers['strict-transport-security'] = [{key: 'Strict-Transport-Security', value: 'max-age=63072000; includeSubdomains; preload'}]; 
 headers['content-security-policy'] = [{key: 'Content-Security-Policy', value: "default-src 'none'; img-src 'self'; script-src 'self'; style-src 'self'; object-src 'none'"}]; 
 headers['x-content-type-options'] = [{key: 'X-Content-Type-Options', value: 'nosniff'}]; 
 headers['x-frame-options'] = [{key: 'X-Frame-Options', value: 'DENY'}]; 
 headers['x-xss-protection'] = [{key: 'X-XSS-Protection', value: '1; mode=block'}]; 
 headers['referrer-policy'] = [{key: 'Referrer-Policy', value: 'same-origin'}]; 
 
 console.log('in handler');
 
 console.log({ xx: event.Records[0].cf.request.uri });
    
 console.log('end handler ');
 
    //Return modified response
    callback(null, response);
};

https://console.aws.amazon.com/cloudwatch/home?region=us-east-1 在此处输入图像描述

在此处输入图像描述

云观察: 在此处输入图像描述

拉姆达测试:

在此处输入图像描述

标签: amazon-web-servicesaws-lambda

解决方案


根据您遇到的行为,我怀疑这只是新版本的 Lambda@Edge 尚未部署到 CloudFront 分配。

每当您需要发布代码更新时,您必须创建新版本的 Lambda 函数,然后替换 CloudFront 分配中的 Lambda 事件以使用新版本记录。

一旦发生这种情况,在每个边缘位置进行修改都需要很短的时间,因此您可能不会立即在日志中看到这些调试行。

由于此过程需要时间来部署,因此请确保使用测试事件(作为 Lambda 的输入)来测试部署 Lambda 后需要测试的场景。一旦您对它感到满意,就执行新版本并进行部署。

有关更多信息,请查看为 Lambda@Edge 编辑 Lambda 函数页面。


推荐阅读