如 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
(使用按钮),它被正确记录。这里可能有什么问题?
最佳答案
当您部署 Lambda@Edge 函数时,它被部署到 所有边缘缓存区域 世界各地的 Lambda Edge 函数的副本。 Regional edge caches是主要 AWS 区域和边缘站点的子集。
当用户请求最近的 pop/edge 时,与边缘缓存区域关联的 lambda 会被调用。与这些区域关联的所有 Lambda 日志都将在它们的 中。边缘缓存区域 CloudWatch 日志。
例如:
如果用户点击 us-east-1
region 那么它的相关日志将在 us-east-1
.
要准确了解您的函数记录的位置(在哪个区域),您可以运行此 AWS CLI 脚本:
FUNCTION_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
您必须将“function_name_without_qualifiers”替换为 lambda@edge 的名称。 Link希望能帮助到你。
关于amazon-web-services - Lambda@Edge 未登录云前端请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46503108/