AWS CloudFront带参数路由异常:请求未转发至后端Lambda
核心问题是CloudFront缓存行为的路径匹配规则未正确覆盖嵌套参数路径,导致请求被转发到前端源而非后端API源。
排查及修复步骤:
检查CloudFront缓存行为的顺序与路径模式
确保针对后端API的缓存行为优先级高于前端缓存行为(CloudFront按列表顺序匹配,先匹配的规则生效)。同时确认API缓存行为的路径模式设置为/api/*(或你实际使用的/API/*,注意路径大小写需与请求一致)。/api/*会匹配所有/api下的子路径,包括/api/media/xxx这类带参数的嵌套路径;如果之前的路径模式是精确匹配(如/api)或仅匹配一级子路径,就会漏掉嵌套参数路径。验证CloudFront缓存行为的源关联
确认/api/*对应的缓存行为关联的是后端API Gateway的源,而非前端应用的源(如S3桶、EC2实例)。如果关联错误,请求自然会被转发到前端。确认API Gateway端点配置
登录AWS控制台,检查API Gateway中/api/media/{imageName}端点是否已正确部署,路径与请求路径完全匹配(注意大小写、参数占位符的格式)。直接访问Lambda调用URL正常说明Lambda本身没问题,但API Gateway的路径匹配或部署可能存在疏漏。排除前端路由干扰
虽然你提到前端未配置该路由捕获逻辑,但如果前端使用了SPA的history模式,且CloudFront将请求转发到前端源,前端框架会尝试捕获所有路径。但这是结果而非原因,核心还是CloudFront的转发规则问题,只要CloudFront正确将请求转发到后端,就不会触发前端路由。
内容的提问来源于stack exchange,提问作者ThunD3eR

