API 网关的自定义域返回 403

Custom domain for API Gateway returning 403

我正在使用 API 网关和 Lambda 创建一个 api。使用 API Gateway Stage 编辑器中指定的 url 一切正常;但是,当我尝试移动到自定义域时,我 运行 遇到了一些问题。

我尝试的第一件事是使用 Route 53 中的 CNAME 记录直接从我的域到我从 API 网关获得的域。那是返回了一些错误,我认为这是不正确的解决方案是正确的吗?

接下来我尝试了 API 网关中的自定义域名功能。我的理解是,这将汇总一个 CloudFront 分布,然后我可以从 Route 53 映射到该分布。当我创建自定义域并添加域映射时,它为我提供了一个 url 到我假设的 CloudFront 分布。 link 返回 403 响应,并且尚未在 CloudFront 中进行分发。调试此问题的好方法是什么?

如果您还没有看过开发者指南,请点击此处。 http://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html

您需要做的就是使用您的 DNS 提供商设置 CNAME,指向 API Gateway 为您提供的 CF 分发。您将无法直接对 CF 分发进行 API 调用。 API 网关根据您在 API 网关中设置的基本路径映射映射 API/stage,因此只有针对域名的 API 调用才能正常工作。

您需要在请求中使用主机 header。主机应该是您的自定义域。

curl https://<cf-id>.cloudfront.net/myapi -H "Host: api.myapi.com"

在我的例子中,我必须添加基本路径映射。

在我的例子中,旧版缓存设置 headers 是问题所在。

如果您在 cloud-front 行为中选择了旧缓存设置 在cloud-front分布下的行为->旧版缓存设置->Header下拉

选择值为 None 后解决了我的问题