amazon-web-services - 为什么我在 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
拉姆达测试:
解决方案
根据您遇到的行为,我怀疑这只是新版本的 Lambda@Edge 尚未部署到 CloudFront 分配。
每当您需要发布代码更新时,您必须创建新版本的 Lambda 函数,然后替换 CloudFront 分配中的 Lambda 事件以使用新版本记录。
一旦发生这种情况,在每个边缘位置进行修改都需要很短的时间,因此您可能不会立即在日志中看到这些调试行。
由于此过程需要时间来部署,因此请确保使用测试事件(作为 Lambda 的输入)来测试部署 Lambda 后需要测试的场景。一旦您对它感到满意,就执行新版本并进行部署。
有关更多信息,请查看为 Lambda@Edge 编辑 Lambda 函数页面。
推荐阅读
- javascript - 仅使 v-list 内的按钮可点击,同时禁用 v-list-item 内容
- amazon-web-services - 为什么即使禁用了 KMS 密钥,我仍然能够在 EC2 中读取加密的 EBS 卷数据?
- spring-integration - 使用 @Valid 将 JSON 集成到对象
- asp.net-core - .Net Core 操作的唯一 ID
- node.js - Gulp 错误 node_contextify - 断言 'args[1]'->IsString() 失败
- r - 使用R将大量文件组织到文件夹中?
- oauth-2.0 - 如何正确授权嵌套的微服务调用
- javascript - Vue 未定义/不是构造函数
- flutter - 我不明白为什么不从小部件树中删除可解雇
- javascript - 如何添加与传递的道具编号一样多的按钮,而不会在 React 上导致过多的重新渲染?