如Docs中所述,我为Viewer Response
的云前触发器设置了Lambda @ edge。
lambda函数代码:
'use strict';
exports.handler = (event, context, callback) => {
console.log('----EXECUTED------');
const response = event.Records[0].cf.response;
console.log(event.Records[0].cf_response);
callback(null, response);
};
我已经为
Viewer Response
事件设置了适当的触发器。现在,当我通过cloudfront发出请求时,必须将其记录在cloudwatch中,但事实并非如此。
如果我执行一个简单的
Test Lambda Function
(使用Button),则将其正确记录。这里可能是什么问题?
最佳答案
部署Lambda @ Edge函数时,它会使用Lambda Edge函数的版本副本部署到世界各地的所有边缘缓存区域。 Regional edge caches是主要AWS区域和边缘位置的子集。
当用户请求到最近的 pop /边缘时,将调用与边缘缓存区域相关联的 lambda。与这些区域关联的所有Lambda日志将位于其边缘缓存区域CloudWatch 日志中。
例如:
如果用户点击us-east-1
区域,则其关联的日志将在us-east-1
中。
要确切知道您的函数记录在哪个位置(哪个区域),可以运行以下AWS CLI脚本:
您必须在其中用lambda @ edge的名称替换“function_name_without_qualifiers”。 LinkFUNCTION_NAME=function_name_without_qualifiers
for region in $(aws --output text ec2 describe-regions | cut -f 3)
do
for loggroup in $(aws --output text logs describe-log-groups --log-group-name "/aws/lambda/us-east-1.$FUNCTION_NAME" --region $region --query 'logGroups[].logGroupName')
do
echo $region $loggroup
done
done
希望能帮助到你。
关于amazon-web-services - Lambda @ Edge未登录Cloudfront请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46503108/