首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS API网关不使用自定义域

问AWS API网关不使用自定义域
EN

Stack Overflow用户
提问于 2019-09-15 12:36:18
回答 3查看 13.3K关注 0票数 9

我已经创建了一个高速公路api,并在AWS中托管了一个api网关。它运行良好,与预期的url:

https://[api-id].execute-api.[region].amazonaws.com/prod/api/v1/todos

但我想使用自定义域调用它,并使用api网关的自定义域选项对其进行了混淆。我已经使用谷歌域名注册了我的域名,我在DNS配置中添加了CNAME条目来将其映射到cloudfront目标域名。到目前一切尚好。

​

​

api网关自定义域配置如下,并有相应的映射。

​

​

我的问题是,在使用url调用时,我得到了消息Cannot GET /aprod/api/v1/todos:

https://apis.mydomain.com/aprod/api/v1/todos

和forbidden上

https://apis.mydomain.com/api/v1/todos

。

我的云监视日志如下。如果我没有调用自定义域,它可以正常工作(绿色块),否则没有特定消息(红色块)。

​

​

我已经花了两个周末在这个问题上,任何帮助都是非常感谢的。

EN

回答 3

Stack Overflow用户

发布于 2019-09-16 02:08:25

根据我的经验,有两个可能的原因。

VPC链路

如果您的原始服务器位于私有VPC中,则需要创建VPC链路和网络负载均衡器(北草坪会议大楼),而不是应用程序负载均衡器(ALB)。

请参阅更多细节:https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-private-integration.html

指向API网关端点

CNAME应该指向API端点,而不是CloudFront。在这种情况下,CNAME的值应该是这样的。

代码语言:javascript
复制
https://[api-id].execute-api.[region].amazonaws.com

否则,通过自定义域的访问将直接传递给CloudFront。

(另一个可能的原因)使用记录

在我的例子中,一个记录被用来指向北草坪会议大楼的别名。这是一个Route53的功能,但使用A记录可能是必要的,而不是CNAME。

票数 10
EN

Stack Overflow用户

发布于 2019-09-25 01:07:42

“无法获取”错误代码不是Lambda或API网关错误代码,它看起来特定于Express JS。

您发布的日志看起来类似于lambda日志,如果是,那么要么是lambda被其他东西调用了,要么您已经通过API调用成功地调用了您的lambda函数,用户"Sándor“建议使用"https://apis.mydomain.com/aprod/api/v1/todos”。

这意味着您没有处理自定义域或API网关错误,而是从Lambda函数代码中看到此错误。一些快速的googling证明了这一点,我想知道这个帖子是否会有帮助?节点,快递-无法获得路由

关于更多细节,如果要在API网关中调用不存在的URI,除非您成功地使用了SIGV4(IAM ),否则您将得到一个带有错误消息“缺失身份验证令牌”的403,即使这样,它也不会返回一个“无法获取”错误消息,除非您为它专门映射了一个网关响应。

票数 2
EN

Stack Overflow用户

发布于 2022-11-23 00:24:05

我已经通过使用电子邮件而不是DNS来验证CA证书来解决这个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57944161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档