将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 年前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则