我在api网关后面有一个lambda函数。当使用调用URL触发时,这是很好的。Invoke URL是在分阶段的方法选项卡中提供的链接。

我向资源发送请求如下,这是很好的工作。

我想为我的api设置一个自定义域,所以我遵循了设置ACM证书的标准过程。除此之外,我还在route53中设置了域(Route53)。查看下面的截图。
进口ACM证书

自定义域映射

在route53中映射的域名

但是当我使用cloudfront链接(d3pn2j4magp6tp.cloudfront.net)或使用POSTMAN的域名(api.tarkshala.com)点击API时,它最终会进入403紫禁城。
我不知道我到底错过了什么?
响应头如下所示:
Connection →keep-alive
Content-Length →23
Content-Type →application/json
Date →Fri, 13 Apr 2018 03:17:25 GMT
Via →1.1 a1cf0e6cf29b584b5fe1ada9ccee9758.cloudfront.net (CloudFront)
X-Amz-Cf-Id →9Jh5HeQIuDNfm5WGlTae34oYZ7BiN3nI2VlH_8PJHLQ0mr2C20njJQ==
X-Cache →Error from cloudfront
x-amz-apigw-id →FQoiyF1phcwFVrg=
x-amzn-ErrorType →ForbiddenException
x-amzn-RequestId →3013c239-3ec9-11e8-abe6-53449bcfc96c响应:
{
"message": "Forbidden"
}发布于 2018-04-14 02:23:30
文档似乎没有提到与API端点关联的CloudFront发行版配置的一个重要方面.似乎只能推断:
当您为边缘优化的API创建自定义域名时,API网关将设置一个CloudFront发行版。但是,您必须设置一个DNS记录,以便将自定义域名映射到CloudFront发行版域名,以便将绑定自定义域名的CloudFront请求通过映射的CloudFront发行版正确地路由到API,并在它们到达时被理解。还必须为自定义域名提供证书。(加了强调,括号内的单词是我的,为了清楚起见增加了) https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html
在内部,CloudFront发行版有两种方法来处理到达传入请求的Host头-- CloudFront可以提交浏览器提交的Host报头,如果它位于期望值列表上,或者总是可以将单个静态值传递给它根据原始配置推断的后端源。
对于由apparently管理的CloudFront发行版,配置显然是通过浏览器发送的内容进行的,这很有意义,因为另一种选择将要求apparently对传入的请求进行额外的操作,至少可以说是复杂的。
因此,要在API部署上测试自定义域名,请求者必须将自定义域名作为header。cloudfront.net别名目标主机名仅用于DNS映射--在处理传入请求时,alias实际上并不是与部署阶段相关联的备用主机名。
如果您的自定义域名指向DNS中的“目标”域名,并且通过自定义域访问API,则所有这些都会自动发生。否则,您可以手动设置Host标头,以便进行测试,如果您使用的工具允许的话。
https://stackoverflow.com/questions/49808921
复制相似问题