了解AWS API网关自定义域名

时间:2017-12-15 07:29:14

标签: amazon-web-services aws-api-gateway amazon-route53

我正在努力了解AWS API网关自定义域的工作原理。

我为我的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(Target Domain NameInvoke URL)生成2个不同的网址?

2 - 为什么Invoke URL有效而Target Domain Name没有?

以下是我的问题的第二部分,我正在尝试为Route 53配置配置Regional Custom Domain Name,但我找不到任何关于正确方法的示例(仅适用于{{ 1}})。

我尝试为Edge Optimized Custom Domain Name创建A api.example.comAlias的记录,但它说:

  

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

因此,我为aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com创建了CNAME条记录,将api.example.com设置为Alias(设置为No会带来与Yes相同的错误消息{1}}记录案例),值为A,但当我尝试以aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com方式调用我的API时,我得到404

我做错了什么?

编辑:

此主题已移至AWS论坛here

编辑2:

显然,正如AWS支持人员所说,API Gateway处理自定义域名和常规API网关URL的方式不一致,所有这些都记录在此AWS论坛帖子中here

2 个答案:

答案 0 :(得分:2)

Route53控制台尚不支持API网关作为ALIAS目标。您必须使用CLI / SDK(或直接点击R53 API)制作ALIAS记录,并提供此页面上列出的目标托管区域:http://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region

  

为什么API网关为同一个API生成2个不同的URL(   目标域名和调用URL)?

Invoke URL是始终可用的有效SSL证书的默认端点。此端点由API网关管理。目标域名是可选的(您必须设置自定义域名),DNS和SSL证书由您/客户管理。

谢谢, 千斤顶

答案 1 :(得分:1)

如果有人想了解API Gateway的用途,请查看this thread

它基本上表示API网关处理常规URL(如aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com)与处理自定义域名URL(如api.myservice.com)的方式不同。因此,当API网关将您的API请求转发到您的Lambda函数时,您的Lambda函数将收到不同的path值,具体取决于您用来调用API的URL类型。

在我的情况下,我使用的是serverless java container,因此我可以在AWS Lambda上运行Jersey Web服务。由于两个URL的URL都没有相同,因此当Jersey收到的URL配置格式不正确时,会返回404.

AWS API Gateway团队表示他们正考虑将此URL调用统一,但到目前为止(2018年1月)尚未妥协。

我的问题的Route 53部分由杰克回答,我没有任何补充。