我创建了云端分布,并使用触发器
附加了lambda`Event type: viewer-requestPath pattern: something/index.html`
Event type: origin-requestPath pattern: something/index.html
根据我的lambda,当我点击端点时,它会重定向到我想要重定向的页面。
但我无法在任何地区看到我的lambda日志。
它也没有显示调用次数。
有没有人遇到过这个问题?
这是我的lambda代码
'use strict';
exports.handler = (event, context, callback) => {
/*
* Generate HTTP redirect response with 302 status code and Location header.
*/
console.log('event',event);
const response = {
status: '302',
statusDescription: 'Found',
headers: {
location: [{
key: 'Location',
value: 'http://<domainname>/something/root.html',
}],
},
};
callback(null, response);
};
答案 0 :(得分:3)
像这样修改你的功能:
const response = {
status: '302',
statusDescription: 'Found',
headers: {
location: [{
key: 'Location',
value: 'http://<domainname>/something/root.html',
}],
'x-lae-region': [ { key: 'x-lae-region', value: process.env.AWS_REGION } ],
},
};
这样做的目的是捕获lambda函数运行的区域 - 它将在测试期间显示us-east-1,但在部署后显示准确的值。
您的浏览器,curl等捕获的响应现在将包含x-lae-region: some-aws-region
,以指示链接到正在处理您的特定请求的边缘的区域。检查该特定区域的日志 - 您应该在那里看到日志和调用。
另请注意,对于Origin Request(但不是Viewer Request)触发器,CloudFront会缓存Lambda生成的响应,因此只有在缓存未命中时才会调用该函数。如果CloudFront缓存了响应,则触发器不会触发 - 缓存的响应在不联系原点的情况下提供。如果您使此功能生效并且您没有看到响应中的更改,那么您几乎肯定会查看缓存的响应,并且希望执行失效。
答案 1 :(得分:1)
我遇到了一个非常相似的问题,这使我离开了几个小时。对于Lambda @ Edge,AWS控制台选项卡中Lambda指标上的数据似乎对于调用和日志而言并不准确。至少他们还不完整。
在此选项卡上,我仅看到与源自控制台的“测试”事件调用相关的指标。我可以在将Lambda部署到的同一区域(名称为us-east-1.LambdaName-EdgeLambda-14DOC7T1Y1SGR)中的CloudWatch中找到我的完整调用指标,而测试调用则在减去该区域的相似指标下列出。日志还以Lambda部署到的区域命名。例如,/ aws / lambda / us-east-1.LambdaName-EdgeLambda-14DOC7T1Y1SGR。我的测试日志在单独的日志组中列出,名称中没有该区域。