配置CloudFront访问Lambda Function URL返回403 Forbidden求助
Lambda Function URL 搭配 CloudFront 出现403 AccessDeniedException 的排查方案
以下是几个最可能的配置遗漏点,按优先级排序:
1. Lambda Function URL 未授权 CloudFront 访问
直接调用Lambda Function URL正常,但通过CloudFront访问被拒,核心原因几乎都是Lambda的资源策略没有允许CloudFront的服务调用。默认的Function URL策略仅允许直接的用户请求,需要手动添加授权规则:
在Lambda控制台的"配置"->"Function URL"->"资源策略"中,添加如下语句(替换占位符为你的实际信息):
{ "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "lambda:InvokeFunctionUrl", "Resource": "arn:aws:lambda:你的Lambda区域:你的AWS账号ID:function:你的Lambda函数名", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::你的AWS账号ID:distribution:你的CloudFront分配ID" } } }
这条策略的作用是仅允许指定的CloudFront分配调用该Function URL,避免无授权的访问。
2. CloudFront 源站类型配置错误
检查CloudFront源站设置中的源站类型是否选择了「自定义源」,而非S3或其他类型。Lambda Function URL属于自定义HTTP源,若选错类型,CloudFront会使用错误的请求格式与源站交互,直接导致403。
3. 源站请求策略的潜在冲突
虽然你使用了AllViewer策略,但少数情况下,过多的请求头转发可能触发Lambda的安全限制。可以尝试临时切换为Managed-AllViewerExceptHostHeader策略,验证是否是头信息导致的问题。不过此情况概率较低,优先排查前两点。
内容的提问来源于stack exchange,提问作者ndk-fj
相关产品推荐
相关产品推荐

