了解 AWS API 网关自定义域名
Understanding AWS API Gateway Custom Domain Names
我很难理解 AWS API 网关自定义域的工作原理。
我已经为我的api设置了一个Regional Custom Domain Name
,比如api.example.com
。结果是 Target Domain Name
的形式:
aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
如果我尝试使用此 link 调用 API,例如:
https://aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com/mymap/mystage/example
但是我得到了 403 Forbidden
.
但是,如果我转到 Stages
和 select mystage
,就会有一个大蓝色 Invoke URL
,其形式为:
https://bbbbbbbbbb.execute-api.us-east-1.amazonaws.com/mymap/mystage/example
哪个有效!
所以这是我的前 2 个问题:
1 - 为什么 API 网关为同一个 API(Target Domain Name
和 Invoke URL
)生成 2 个不同的 URL?
2 - 为什么 Invoke URL
有效而 Target Domain Name
无效?
这是我问题的第二部分,我正在尝试为 Regional Custom Domain Name
配置配置 Route 53
,但我找不到任何关于正确方法的示例(只是为了Edge Optimized Custom Domain Name
).
我试图为 api.example.com
创建一个 A
记录作为 Alias
到 aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
,但它说:
The record set could not be saved because:
- Alias Target contains an invalid value.
所以我为 api.example.com
创建了一个 CNAME
记录,将 Alias
设置为 No
(设置为 Yes
会带来与A
记录案例)和值为 aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
但是当我尝试将我的 API 调用为 https://api.example.com/mymap/mystage/example
.[=44= 时我得到 404
]
我做错了什么?
编辑:
此帖子已移至 AWS 论坛 here
编辑 2:
显然,正如 AWS 支持人员所说,API 网关处理自定义域名和常规 API 网关 URL 的方式不一致,所有内容都记录在这个 AWS 论坛帖子 here
Route53 控制台尚不支持 API 网关作为 ALIAS 目标。您必须使用 CLI/SDK(或直接点击 R53 API)创建别名记录,并提供此页面上列出的目标托管区域:http://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region
Why does API Gateway generate 2 different URLs for the same API (the
Target Domain Name and the Invoke URL)?
Invoke URL 是始终可用有效 SSL 证书的默认端点。此端点由 API 网关管理。目标域名是可选的(您必须设置自定义域名),DNS 和 SSL 证书由 you/customer.
管理
谢谢,
杰克
如果有人想了解 API 网关发生了什么,请查看 this thread。
它基本上是说 API 网关处理常规 URLs(如 aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
)的方式不同于它处理自定义域名 URLs(如 api.myservice.com
).因此,当 API 网关将您的 API 请求转发给您的 Lambda 函数时,您的 Lambda 函数将收到不同的 path
值,具体取决于您用来调用您的 URL 的类型API.
在我的例子中,我使用的是 serverless java container,因此我可以 运行 AWS Lambda 上的 Jersey Web 服务。由于 URL 没有被相同地传递给两个 URL,Jersey 将 return 一个 404 当它收到一个对其配置格式错误的 URL 时。
AWS API 网关团队表示他们正在考虑统一此 URL 调用,但到目前为止(2018 年 1 月)没有妥协。
Jack 回答了我问题的 53 号公路部分,我没有什么要补充的。
我很难理解 AWS API 网关自定义域的工作原理。
我已经为我的api设置了一个Regional Custom Domain Name
,比如api.example.com
。结果是 Target Domain Name
的形式:
aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
如果我尝试使用此 link 调用 API,例如:
https://aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com/mymap/mystage/example
但是我得到了 403 Forbidden
.
但是,如果我转到 Stages
和 select mystage
,就会有一个大蓝色 Invoke URL
,其形式为:
https://bbbbbbbbbb.execute-api.us-east-1.amazonaws.com/mymap/mystage/example
哪个有效!
所以这是我的前 2 个问题:
1 - 为什么 API 网关为同一个 API(Target Domain Name
和 Invoke URL
)生成 2 个不同的 URL?
2 - 为什么 Invoke URL
有效而 Target Domain Name
无效?
这是我问题的第二部分,我正在尝试为 Regional Custom Domain Name
配置配置 Route 53
,但我找不到任何关于正确方法的示例(只是为了Edge Optimized Custom Domain Name
).
我试图为 api.example.com
创建一个 A
记录作为 Alias
到 aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
,但它说:
The record set could not be saved because: - Alias Target contains an invalid value.
所以我为 api.example.com
创建了一个 CNAME
记录,将 Alias
设置为 No
(设置为 Yes
会带来与A
记录案例)和值为 aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
但是当我尝试将我的 API 调用为 https://api.example.com/mymap/mystage/example
.[=44= 时我得到 404
]
我做错了什么?
编辑:
此帖子已移至 AWS 论坛 here
编辑 2:
显然,正如 AWS 支持人员所说,API 网关处理自定义域名和常规 API 网关 URL 的方式不一致,所有内容都记录在这个 AWS 论坛帖子 here
Route53 控制台尚不支持 API 网关作为 ALIAS 目标。您必须使用 CLI/SDK(或直接点击 R53 API)创建别名记录,并提供此页面上列出的目标托管区域:http://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region
Why does API Gateway generate 2 different URLs for the same API (the Target Domain Name and the Invoke URL)?
Invoke URL 是始终可用有效 SSL 证书的默认端点。此端点由 API 网关管理。目标域名是可选的(您必须设置自定义域名),DNS 和 SSL 证书由 you/customer.
管理谢谢, 杰克
如果有人想了解 API 网关发生了什么,请查看 this thread。
它基本上是说 API 网关处理常规 URLs(如 aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
)的方式不同于它处理自定义域名 URLs(如 api.myservice.com
).因此,当 API 网关将您的 API 请求转发给您的 Lambda 函数时,您的 Lambda 函数将收到不同的 path
值,具体取决于您用来调用您的 URL 的类型API.
在我的例子中,我使用的是 serverless java container,因此我可以 运行 AWS Lambda 上的 Jersey Web 服务。由于 URL 没有被相同地传递给两个 URL,Jersey 将 return 一个 404 当它收到一个对其配置格式错误的 URL 时。
AWS API 网关团队表示他们正在考虑统一此 URL 调用,但到目前为止(2018 年 1 月)没有妥协。
Jack 回答了我问题的 53 号公路部分,我没有什么要补充的。