Amazon web services aws lambda:如何从真实请求(非测试)获取console.log日志?
我读过这个文件,做了这个lambda:Amazon web services aws lambda:如何从真实请求(非测试)获取console.log日志?,amazon-web-services,amazon-cloudfront,amazon-cloudwatch,Amazon Web Services,Amazon Cloudfront,Amazon Cloudwatch,我读过这个文件,做了这个lambda: exports.handler = async (event) => { // TODO implement // const response = { // statusCode: 200, // body: JSON.stringify('Hello from Lambda!'), // }; console.log(123321); console.log(event.Re
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由CloudFront触发,它现在成为Lambda@Edge,因此CloudWatch日志流是在调用Lambda实例的区域中创建的(这由CloudFront决定) 因此,在测试之后,可以使用提供的shell脚本轻松确定特定区域 您可以使用标题处的下拉菜单切换区域:
由于Lambda由CloudFront触发,它现在成为Lambda@Edge,因此CloudWatch日志流是在调用Lambda实例的区域中创建的(这由CloudFront决定) 因此,在测试之后,可以使用提供的shell脚本轻松确定特定区域 您可以使用标题处的下拉菜单切换区域:
你的lambda有没有接到电话?我的意思是,当您使用CloudFront时,您是否在CloudWatch中看到其他控制台日志?@tenorfly,是的,它调用了,因为我在url
xxx.CloudFront.net/test1.html
中看到了响应。我没有任何日志,不是用“测试”按钮调用它。不,我的意思是当它在CloudFront后面时,它会被调用吗。我知道在测试时会调用它。@tenorfly现在来检查它吗?当您尝试通过CloudFront调用lambda时,它应该记录一些内容,如果没有,那么它甚至不会被调用。为了使调试更容易、更清晰,请更改代码,例如添加另一个console.log
并保存它,以便下次调用lambda时,它将创建新的CloudWatch日志流。如果没有创建流,则不会调用lambda。是否会调用您的lambda?我的意思是,当您使用CloudFront时,您是否在CloudWatch中看到其他控制台日志?@tenorfly,是的,它调用了,因为我在urlxxx.CloudFront.net/test1.html
中看到了响应。我没有任何日志,不是用“测试”按钮调用它。不,我的意思是当它在CloudFront后面时,它会被调用吗。我知道在测试时会调用它。@tenorfly现在来检查它吗?当您尝试通过CloudFront调用lambda时,它应该记录一些内容,如果没有,那么它甚至不会被调用。为了使调试更容易、更清晰,请更改代码,例如添加另一个console.log
并保存它,以便下次调用lambda时,它将创建新的CloudWatch日志流。如果没有创建流,则不会调用lambda。