了解 AWS API Gateway 自定义域名

2024-04-28

我很难理解 AWS API Gateway 自定义域的工作原理。

我已经设置了一个Regional Custom Domain Name对于我的API,比如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 Gateway 为同一个 API 生成 2 个不同的 URL(Target Domain NameInvoke URL)?

2 - 为什么Invoke URL作品和Target Domain Name不是吗?


这是我的问题的第二部分,我正在尝试配置Route 53为了Regional Custom Domain Name配置,但我找不到任何有关正确方法的示例(仅用于Edge Optimized Custom Domain Name).

我尝试创建一个A记录为api.example.com as an Alias to aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com,但它说:

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

所以我创建了一个CNAME记录为api.example.com, 环境Alias to No(设置为Yes带来与中相同的错误消息A记录案例)和值为aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com但后来我得到了404当我尝试调用我的 API 时https://api.example.com/mymap/mystage/example.

我究竟做错了什么?


EDIT:

该主题已移至 AWS 论坛


EDIT 2:

显然,正如 AWS 支持人员所说,API Gateway 处理自定义域名和常规 API Gateway URL 的方式不一致,所有内容都记录在这个 AWS 论坛线程中


如果有人想了解 API Gateway 发生了什么,请看一下.

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

就我而言,我正在使用无服务器 Java 容器 https://github.com/awslabs/aws-serverless-java-container,这样我就可以在 AWS Lambda 上运行 Jersey Web 服务。由于两个 URL 的 URL 传递方式不同,因此当 Jersey 收到配置格式错误的 URL 时,将返回 404。

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

我问题的 53 号公路部分已由 Jack 回答,我没有什么可补充的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

了解 AWS API Gateway 自定义域名 的相关文章

随机推荐