如何确定搭配CloudFront时S3对象的实际渲染返回位置
验证CloudFront返回数据实际来源位置的方法
完全可以通过响应头识别返回数据的来源,具体操作如下:
- 利用CloudFront原生响应头识别边缘节点位置
CloudFront会自动返回x-amz-cf-pop响应头,该字段前3位为节点所在城市的IATA机场代码,可直接对应节点地理位置:- 缓存命中时(
x-cache头值为Hit from cloudfront),该字段对应的值就是返回内容的边缘节点位置 - 常见亚洲节点代码示例:BOM(孟买)、DEL(德里)、SIN(新加坡)、HKG(中国香港)、NRT(东京)等,你身处印度发起请求时,只要拿到的
x-amz-cf-pop前缀为亚洲区域IATA码,即可确认内容从亚洲节点返回
你可以通过以下两种方式查看该响应头:
- 浏览器F12打开开发者工具,切换到「网络」标签,刷新请求后查看对应资源的响应头
- 执行curl命令查看:
curl -I 你的CloudFront访问地址/对应资源路径
- 缓存命中时(
- 结合自定义头区分缓存返回与源站返回
你可以在API Gateway触发的Lambda函数中新增自定义响应头,比如x-data-source: origin-lambda,仅当请求缓存未命中、CloudFront回源到Lambda拉取数据时,返回的响应才会携带该头;如果响应是CloudFront缓存命中返回,则不会携带该自定义头,可进一步区分数据来源是缓存还是源站。 - 补充验证方式
你也可以登录AWS控制台,在CloudFront的监控面板中查看按区域划分的缓存命中率统计数据,可宏观验证印度/亚洲区域的请求命中缓存时均由本地节点响应。
内容的提问来源于stack exchange,提问作者Neha S
相关产品推荐
相关产品推荐

