You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CloudFront日志中添加CloudFront-Viewer-Country及跨区域采集Lambda Edge日志

问题1:如何在CloudFront日志中添加CloudFront-Viewer-Country头部

CloudFront默认访问日志不会包含自定义头部,需要手动配置日志的自定义字段来添加该头部:

  • 登录CloudFront控制台,找到目标分发,切换到「监控」标签页
  • 点击「配置日志」,在「自定义字段」区域点击「添加字段」
  • 选择「请求头部」类型,输入CloudFront-Viewer-Country作为字段名称,保存配置
  • 注意:该配置仅对新生成的日志生效,过往的历史日志不会自动补充该字段
问题2:Lambda Edge日志是否满足需求?如何跨区域采集日志

能否满足需求?

可以满足。只要Lambda Edge函数正确捕获并打印CloudFront-Viewer-Country字段,所有访问请求的地区信息都会被记录到日志中。不过你当前的代码存在错误:Node.js环境中没有print函数,需要替换为console.log;另外cloudfront-viewer-country在请求头部中是数组格式,需取[0].value获取实际国家代码,修正后的代码如下:

'use strict';

exports.handler = (event, context, callback) => {
   const request = event.Records[0].cf.request;   
   if(request.headers['cloudfront-viewer-country'])
   {
      console.log('country is '+request.headers['cloudfront-viewer-country'][0].value);
   }
   return callback(null,request);
};

跨区域采集日志的方法

Lambda Edge函数在全球边缘节点执行时,日志默认存储在对应边缘节点所在区域的CloudWatch Logs中。要将所有区域的日志聚合到你有权限访问的us-east-1区域,可按以下步骤操作:

  • 在us-east-1区域创建Kinesis Data Firehose流,配置目标为us-east-1的S3存储桶(用于存储聚合后的日志)
  • 遍历所有AWS区域,找到对应Lambda Edge函数的日志组(格式通常为/aws/lambda-edge/<你的函数名>),给每个日志组添加订阅过滤器,将日志发送到上述创建的Firehose流
  • 确保你的IAM角色拥有访问该Firehose流和目标S3存储桶的权限,这样所有区域的Lambda Edge日志都会被统一转发到us-east-1的S3存储桶,你可以直接从这里提取所有用户的地区信息

内容的提问来源于stack exchange,提问作者Pavan Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 04:10:15