繁体   English   中英

了解AWS API Gateway自定义域名

[英]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 NameInvoke 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.comAlias ,但它说:

无法保存记录集,因为:-别名目标包含无效值。

因此,我为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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM