将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
EXPERTE
gefragt vor 2 Jahren44 Aufrufe
1 Antwort
0

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

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

profile picture
EXPERTE
beantwortet vor 2 Jahren

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen