仅针对特定文件在 Cloudfront 源响应流中触发 lambda 边缘

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

我正在尝试捕获调用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 边缘,从而导致延迟。任何建议都会非常有帮助。

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

查看缓存行为中的 PathPattern 值。

Lambda@Edge 函数附加在缓存行为级别。您可以为此特定路径模式(路由)创建新的缓存行为。只有匹配的请求才会匹配缓存行为并执行关联的 Lambda@Edge 函数。所有其他请求将匹配其他缓存行为,并且不会执行此 Lambda@Edge 函数。

例如,使用上面的示例路径,您的路径模式将是

/cat.jpg

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