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

Lambda@Edge源请求函数event参数为空,如何排查解决?

Lambda@Edge Origin Request 事件参数为空的原因排查

环境信息

  • CloudFront分发配置:
    • 默认行为关联Lambda@Edge:origin request: Lambda@Edge / arn:aws:lambda:us-east-1:...:function:*functionName*:4
  • Lambda函数版本4的触发器详情:
    Event type: origin-request
    Include Body: Yes
    Path pattern: *
    Service principal: replicator.lambda.amazonaws.com
    Statement ID: replicator.lambda.GetFunction
    
  • Lambda函数代码:
    'use strict';
    
    exports.handler = (event, context, callback) => {
        console.log("context: ", context);
        console.log("event: ", event);
    };
    
  • 测试现象:向CloudFront分发域名发送GET请求后,日志显示event: {}

排查方向及解决方法

1. 未调用Lambda回调函数,导致执行流程异常

你的代码仅打印了event和context,但没有调用callback()来完成Lambda执行。Lambda@Edge的origin request事件要求必须通过回调返回请求对象,否则会触发执行超时或异常,进而导致日志输出不完整(甚至只打印空对象)。

修改代码,补充回调逻辑:

'use strict';

exports.handler = (event, context, callback) => {
    console.log("context: ", context);
    console.log("event: ", event);
    // 必须调用回调返回请求,确保执行流程正常结束
    callback(null, event.Records[0].cf.request);
};

2. 查看了错误区域的Lambda日志

Lambda@Edge会自动将原函数复制到CloudFront边缘节点所在的多个区域。你需要确认查看的是边缘区域中复制后的Lambda函数日志,而非us-east-1区域的原函数日志:

  • 进入CloudFront控制台,找到目标分发
  • 切换到「关联的资源」标签,点击对应的Lambda@Edge函数链接,会直接跳转到边缘区域的函数副本
  • 在副本函数的「监控」-「日志」中查看执行记录

3. CloudFront配置未生效或匹配异常

  • 确认CloudFront分发状态为「已部署」,若处于「正在部署」状态,新配置还未同步到边缘节点
  • 检查请求路径是否匹配默认行为的路径模式*,若存在更具体的行为规则,可能会优先匹配并跳过当前Lambda关联
  • 验证默认行为的Lambda@Edge关联是否已正确启用

4. Lambda权限配置不完整

虽然触发器显示了replicator.lambda.amazonaws.com的权限,但需确保Lambda函数的资源策略包含CloudFront服务主体的调用许可:

  • 查看Lambda函数的「配置」-「权限」-「资源策略」
  • 确认策略中存在允许cloudfront.amazonaws.com调用该函数的语句,而非仅针对replicator服务

内容的提问来源于stack exchange,提问作者Arthur Feldman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 09:05:17