![](/img/trans.png)
[英]Terraformed AWS API Gateway Custom Domain Names throws 403 Forbidden
[英]Understanding AWS API Gateway Custom Domain Names
我正在努力了解AWS API Gateway Custom Domain的工作方式。
我已经为我的api设置了Regional Custom Domain Name
,例如api.example.com
。 结果是以下形式的Target Domain Name
:
aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
如果我尝试使用此链接来调用API,例如:
https://aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com/mymap/mystage/example
但是我得到了403 Forbidden
。
但是,如果我转到Stages
并选择mystage
则会有一个蓝色的大Invoke URL
,其形式为:
https://bbbbbbbbbb.execute-api.us-east-1.amazonaws.com/mymap/mystage/example
哪个有效!
所以这是我的前两个问题:
1-为什么API网关为同一API生成2个不同的URL( Target Domain Name
和Invoke URL
)?
2-为什么“ Invoke URL
有效而“ Target Domain Name
”无效?
这是我问题的第二部分,我正在尝试为Regional Custom Domain Name
配置配置Route 53
,但找不到任何有关正确方法的示例(仅针对Edge Optimized Custom Domain Name
)。
我尝试为api.example.com
创建A
记录,作为aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
的Alias
,但它说:
无法保存记录集,因为:-别名目标包含无效值。
因此,我为api.example.com
创建了一个CNAME
记录,将Alias
设置为No
(设置为Yes
会带来与A
记录情况相同的错误消息),并将值设置为aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
但是当我尝试以https://api.example.com/mymap/mystage/example
调用我的API时,得到了404
。
我究竟做错了什么?
编辑:
该线程已移至此处的AWS论坛
编辑2:
显然,正如AWS支持人员所说,API网关对待自定义域名和常规API网关URL的方式存在不一致之处,所有内容均在此AWS论坛线程中进行了记录。
如果有人想了解API Gateway发生了什么,请看一下该线程 。
它基本上说API网关处理常规URL(例如aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
)与处理自定义域名URL(例如api.myservice.com
)的方式不同。 因此,当API Gateway将您的API请求转发到Lambda函数时,您的Lambda函数将收到不同的path
值,具体取决于您用来调用API的URL类型。
就我而言,我使用的是无服务器Java容器 ,因此可以在AWS Lambda上运行Jersey网络服务。 由于未同时传递两个URL的URL,因此Jersey收到其配置格式错误的URL时,它将返回404。
AWS API Gateway团队表示,他们正在考虑使此URL调用统一化,但到目前为止(2018年1月)对此没有妥协。
杰克回答了我的问题的53号公路部分,我无话可说。
Route53控制台尚不支持API网关作为ALIAS目标。 您必须使用CLI / SDK(或直接点击R53 API)进行ALIAS记录,并提供此页面上列出的目标托管区域: http : //docs.aws.amazon.com/general/latest/ gr / rande.html#apigateway_region
为什么API Gateway会为同一API生成两个不同的URL(目标域名和调用URL)?
调用URL是默认端点,始终可通过有效的SSL证书使用。 该端点由API网关管理。 目标域名是可选的(您必须设置自定义域名),并且DNS和SSL证书由您/客户管理。
谢谢杰克
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.