将Cloudfront连接到Lambda Function的URL总是会导致被禁止访问的错误。

0

【以下的问题经过翻译处理】 我已设置了lambda函数url和cloudfront系统。

  1. Lambda函数Url很简单,是返回一个图像或一个json值的函数。
  2. Cloudfront使用以下设置:
  • Origins:
    • Origin Domain:{LAMBDA函数的URL}
    • Protocol:HTTPS only - TLSv1
    • Enable Origin Shield:No
  • Behavior:
    • Viewer:Redirect HTTP to HTTPS
    • Allowed HTTP Method:GET, HEAD
    • Restrict Viewer Access:No
    • Cache Policy:Managed-CachingDisabled
    • Origin Request Policy:AllViewer

然而,结果始终返回403 Forbidden,以及以下body:

{"Message":null}

和以下header:

X-cache: Error from cloudfront
x-amzn-ErrorType: AccessDeniedException

我是否错过了任何导致此错误的设置?我已经测试过使用postman和浏览器直接命中函数url,它可以正常工作。

profile picture
專家
已提問 2 年前檢視次數 44 次
1 個回答
0

【以下的回答经过翻译处理】 感谢提供详细的描述。您出现了“403禁止访问”的问题是由于使用了“AllViewer”的Origin Request Policy。在这种情况下,当您通过CloudFront URL访问网站时,类似于“d12345678.cloudfront.net”的“Host” header将被转发到Lambda,但无法被识别,从而导致403错误。

解决方案是创建自定义的Origin Request Policy,仅转发必要的值(但不转发“Host” header)。

profile picture
專家
已回答 2 年前

您尚未登入。 登入 去張貼答案。

一個好的回答可以清楚地回答問題並提供建設性的意見回饋,同時有助於提問者的專業成長。

回答問題指南