我正在尝试捕获调用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;
const response = event.Records[0].cf.response;
response.headers['cloudfront-viewer-country'] = request.headers['cloudfront-viewer-country']
return callback(null,response);
};
这工作正常。但是,我希望仅在对 cat.jpg 进行的调用时触发 lambda 边缘。我会担心是否所有调用都会触发 lambda 边缘,从而导致延迟。任何建议都会非常有帮助。
查看缓存行为中的 PathPattern 值。
Lambda@Edge 函数附加在缓存行为级别。您可以为此特定路径模式(路由)创建新的缓存行为。只有匹配的请求才会匹配缓存行为并执行关联的 Lambda@Edge 函数。所有其他请求将匹配其他缓存行为,并且不会执行此 Lambda@Edge 函数。
例如,使用上面的示例路径,您的路径模式将是
/cat.jpg