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

部署Lambda@Edge函数时出现Cannot read properties of undefined错误排查

问题原因分析:Lambda@Edge函数报错 "Cannot read properties of undefined (reading 'startsWith')"

以下是几种常见的触发原因:

  • 请求对象缺失预期字段
    官方示例代码默认request.origin.s3或request.headers这类嵌套字段存在,但如果CloudFront的源配置未正确关联S3,或者触发逻辑不符合预期,这些字段会变成undefined。比如代码里写了request.origin.s3.domainName.startsWith('xxx'),一旦request.origin.s3不存在,就会直接抛出这个错误。

  • 触发阶段配置错误
    针对S3 CMK加密场景的Lambda@Edge函数,必须配置在Origin Request触发阶段。如果误选了Viewer Request/Response或Origin Response阶段,请求对象的结构会和示例代码假设的完全不同,S3源相关的字段自然找不到,调用startsWith时就会报错。

  • S3源使用自定义域名
    若你的S3源用了自定义域名(而非S3默认的bucket.s3.region.amazonaws.com格式),request.origin.s3的字段结构会和示例代码的假设不一致,比如domainName字段可能不存在或者被其他字段替代,导致读取时出现undefined。

  • 代码缺少空值校验逻辑
    部分官方示例代码会省略空值判断步骤,直接访问嵌套字段。比如没有先检查request.origin?.s3?.domainName是否存在,就直接调用startsWith方法,一旦某个层级的字段为空,就会触发这个错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 13:16:16