amazon-web-services - Lambda@Edge 未登录云前端请求

标签 amazon-web-services aws-lambda amazon-cloudfront aws-lambda-edge

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/

相关文章:

amazon-web-services - 我可以在一个 AWS Elastic Beanstalk 应用程序中拥有多个网站吗?

amazon-web-services - AWS CloudWatch 日志洞察

postgresql - 从 AWS Glue 连接到 Postgres Heroku 数据库,SSL 问题

amazon-web-services - 使用 SAM 模板在 AWS 代理 API 网关中列入 IP 白名单

node.js - 错误消息 : "event is not defined" in lambda function nodejs

amazon-web-services - Amazon S3 + CloudFront 查询特定版本的存储文件

amazon-web-services - 来自 AWS CloudFront 的外部 Next.js 图像的缓存控制策略对于 Google Lighthouse 来说效率不高

go - API 网关 -> Go Lambda 参数

amazon-s3 - 流视频-jwplayer,亚马逊S3和Cloudfront

amazon-web-services - 通过 CloudFront 的 S3 总是给我 AccessDenied 消息