AWS API Gateway在CloudFront后面,如何转发头部信息?

7

我有一个 API 网关,它是我创建的 CloudFront 分发背后的众多源之一。我试图将某些头信息转发到源(例如 Host,Origin 等)。当我不转发任何头信息时,请求可以正常到达 API 网关。但是,一旦在 CloudFront 分发中启用头信息转发(无论是全部还是白名单),API 网关就无法处理这些请求。我会收到以下错误:

ERROR

The request could not be satisfied.

CloudFront wasn't able to connect to the origin.

有什么建议可以解决这个问题吗?

您是否启用了API网关日志记录?我会检查API网关日志,看看是否记录了任何有用的错误信息。 - Mark B
我看到CloudWatch中有一个日志组,但其中没有流。 - Marty
1
当然你不能将原始请求的 Host: 头信息转发到 API 网关,这是没有意义的。API 网关需要在传入请求的主机头中看到它分配给你的端点的主机名。如果启用其他哪些标头会破坏你的配置呢? - Michael - sqlbot
是的,现在看起来很明显。有没有一个我可以使用的标头来获取CloudFront转发的CNAME?我尝试转发X-Forwarded-Host标头,但似乎CF没有设置这个。 - Marty
@Marty - 你解决了这个问题吗? - Petrogad
1
@Petrogad 是的,我最终获得了Lambda@Edge的预览访问权限,并自己转发了标头。但是,它仍处于预览阶段,因此尚未在生产中使用。 - Marty
1个回答

7
如上所述,您无法将Host头转发到API Gateway源。 没有Host标头,API Gateway不知道正在调用哪个API。

4
能否使用Lambda Edge将发起请求的主机映射到类似于X-Forwarded-Host的内容? - Petrogad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接