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

如何配置CloudFront的Lambda Edge仅在访问cat.jpg时触发

解决Lambda@Edge仅针对cat.jpg请求触发的方案

方案一:在Lambda@Edge代码中添加路径判断

直接修改现有函数,增加请求路径校验逻辑,仅当请求目标为/cat.jpg时执行头传递操作,其他请求直接返回响应,避免不必要的计算延迟。

修改后的代码如下:

'use strict';

exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    const response = event.Records[0].cf.response;
    const requestUri = request.uri;

    // 仅匹配/cat.jpg请求时执行头传递逻辑
    if (requestUri === '/cat.jpg') {
        response.headers['cloudfront-viewer-country'] = request.headers['cloudfront-viewer-country'];
    }

    // 无论是否匹配,直接返回响应
    return callback(null, response);
};

注意:如果cat.jpg存在路径前缀(如/assets/cat.jpg),可将判断条件改为requestUri.endsWith('/cat.jpg')来适配。

方案二:调整CloudFront缓存行为,精准触发Lambda@Edge

从CloudFront触发规则层面控制,仅让/cat.jpg请求触发Lambda@Edge函数,彻底避免全量触发:

  • 登录CloudFront控制台,找到目标分发
  • 进入「行为」标签页,点击「创建行为」
  • 在「路径模式」中输入/cat.jpg,设置「优先级」为比默认行为(优先级0)更小的数值(比如1,数值越小优先级越高)
  • 在「Lambda函数关联」区域,选择「源响应」事件,关联你的Lambda@Edge函数
  • 找到原有默认行为,移除其「源响应」阶段的Lambda@Edge关联
  • 保存修改,等待CloudFront分发部署完成

此配置下,只有请求/cat.jpg时才会触发Lambda@Edge,其他请求完全不触发函数,从根源上消除不必要的延迟。

两种方案均可实现需求:方案一适合快速调整,无需改动CloudFront配置;方案二更高效,能减少Lambda函数调用次数,建议优先采用方案二。

内容的提问来源于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.27 10:02:47