在 AWS Cloudfront 日志中包含 CloudFront-Viewer-Country

问题描述 投票:0回答:1

这就是我正在尝试做的事情。我在 S3 中有一个文件 (cat.jpg)。 Cloudfront是以S3为源创建的。我正在尝试捕获调用 cloudfront dns 端点以访问 cat.jpg 的用户的位置。例如:https://myrepourl.company.com/cat.jpg。用户可以来自全球任何国家。

在 Cloudfront 缓存行为中,添加了标头“CloudFront-Viewer-Country”。 我在响应标头策略中添加了自定义策略,并在其中添加了标头“CloudFront-Viewer-Country”。

我关联了一个 lambda 边缘函数(来自 us-east-1),下面是使用的代码。

'use strict';

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

问题1 我在日志 S3 存储桶的日志文件(以 gz 格式存储)中没有看到标头“CloudFront-Viewer-Country”。我看到用户的 IP 地址。但我也想看到国家/地区标题。

问题2 我在 lambda 边缘日志中看到标题“CloudFront-Viewer-Country”。但我只能查看与 us-east-1 区域相对应的 lambda 边缘日志,因为我只能访问该区域中的 AWS 资源。 lambda 边缘日志对我的要求有什么用吗?如果是这样,我如何从所有区域捕获 lambda 边缘日志,以便我可以查看访问 Cloudfront url 的任何用户的国家/地区详细信息。

amazon-web-services amazon-s3 amazon-cloudfront aws-lambda-edge
1个回答
0
投票

您是否试图收集这些数据来生成报告/可视化?如果是这样,您可以开箱即用地执行此操作的一种方法是使用 CloudFront 安全仪表板

控制台中的步骤:

  1. 导航到 CloudFront 发行版的“安全”选项卡
  2. 启用 WAF(如果尚未启用)
  3. 在“请求日志”部分启用日志记录(如果尚未启用)
  4. 按 URI 路径添加过滤器,以可视化查看该 URI 路径的观看者所在的国家/地区

本博客文章的图 10 向您展示了可视化效果:https://aws.amazon.com/blogs/networking-and-content-delivery/introducing-cloudfront-security-dashboard-a-unified-cdn -和-安全-体验/

如果您需要以编程方式执行此操作,您可以直接查询 CloudWatch Log Insights 以提取原始数据(这是此安全仪表板中的日志分析器在控制台中为您执行的操作)。

© www.soinside.com 2019 - 2024. All rights reserved.