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脚本:

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
您必须在其中用lambda @ edge的名称替换“function_name_without_qualifiers”。 Link
希望能帮助到你。

关于amazon-web-services - Lambda @ Edge未登录Cloudfront请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46503108/

10-16 21:02