gpt4 book ai didi

amazon-web-services - AWS API Gateway 不适用于自定义域

转载 作者:行者123 更新时间:2023-12-04 08:01:47 24 4
gpt4 key购买 nike

我创建了一个 expressjs api 并托管在 AWS lambda 中,并带有一个 api 网关。使用 url 可以正常工作:

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



但我想使用自定义域调用它,并使用 api 网关的自定义域选项对其进行了配置。我已经使用 google 域注册了我的域,并在 DNS 配置中添加了 CNAME 条目以将其映射到云端目标域名。到现在为止还挺好。

enter image description here

api网关自定义域配置如下,对应映射。

enter image description here

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

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



forbidden

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



.

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

enter image description here

我已经在这个问题上度过了两个周末,非常感谢任何帮助。

最佳答案

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

专有网络链接

如果您的源服务器位于私有(private) VPC 内,则需要创建 VPC 链接和网络负载均衡器 (NLB),而不是应用程序负载均衡器 (ALB)。

查看更多详情:https://docs.aws.amazon.com/apigateway/latest/developerguide/set-up-private-integration.html

指向 API 网关端点

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

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

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

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

在我的例子中,A 记录用于指向 NLB 的别名。这是一个 functionality of Route53但可能需要使用 A 记录而不是 CNAME。

关于amazon-web-services - AWS API Gateway 不适用于自定义域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57944161/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com