[英]AWS API Gateway not working with custom domain
我创建了一个 expressjs api 并托管在 AWS lambda 中,并带有一个 api 网关。 它与 url 的预期一样工作正常:
https://[api-id].execute-api.[region].amazonaws.com/prod/api/v1/todos
但是我想使用自定义域调用它,并且我使用 api 网关的自定义域选项配置了它。 我已经使用谷歌域注册了我的域,并且我已经将 DNS 配置中的 CNAME 条目添加到 map 到云端目标域名。 到目前为止,一切都很好。
api网关自定义域配置如下,对应映射。
我的问题是我在使用 url 调用时收到消息Cannot GET /aprod/api/v1/todos
:
并forbidden
.
我的cloudwatch日志如下。 如果我不使用自定义域调用它工作正常(绿色块),否则没有特定消息(红色块)。
我已经在这个问题上度过了两个周末,非常感谢任何帮助。
根据我的经验,有两个可能的原因。
如果您的源服务器在私有 VPC 内,则需要创建 VPC 链路和网络负载均衡器 (NLB),而不是应用程序负载均衡器 (ALB)。
查看更多详细信息: https : //docs.aws.amazon.com/apigateway/latest/developerguide/set-up-private-integration.html
CNAME 应该指向 API Gateway 端点而不是 CloudFront。 在这种情况下,CNAME 的值应该是这样的。
https://[api-id].execute-api.[region].amazonaws.com
否则,通过自定义域的访问将直接传递到 CloudFront。
“无法获取”错误代码不是 Lambda 或 API 网关错误代码,它看起来特定于 Express JS。
您发布的日志看起来像 lambda 日志,如果是,那么 lambda 正在被其他东西调用,或者您已使用“ https://apis.mydomain.com/aprod/通过 API 调用成功调用了您的 lambda 函数api/v1/todos ”作为用户“Sándor Bakos”的建议。
这意味着您不是在处理自定义域或 API 网关错误,而是从您的 Lambda 函数代码中看到此错误。 一些快速的谷歌搜索证明了这一点,我想知道这篇 SO 帖子是否会有所帮助? 节点,快递 - 无法获取路线
更详细一点,如果您要在 API Gateway 中调用不存在的 URI,除非您成功使用 SIGV4(IAM Auth),否则您将收到 403 错误消息“Missing Authentication Token”,即使如此除非您专门为其映射了网关响应,否则不会返回“无法获取”错误消息。
您是否检查了用于在API Gateway中为API设置自定义域名的官方文档 ? 请注意,根据您选择的部署选项,建议是不同的-区域优化或边缘优化:
在为边缘优化的API创建自定义域名时,API Gateway会设置CloudFront分配。 但是,您必须设置DNS记录,以将绑定到自定义域名的API请求的自定义域名映射到CloudFront分配域名,该请求将通过映射的CloudFront分配路由到API网关。 您还必须提供自定义域名的证书。
当您为区域API创建自定义域名时,API Gateway会为API创建区域域名。 您必须设置DNS记录,以将自定义域名映射到区域域名,以绑定到要通过映射的区域API端点路由到API网关的自定义域名的API请求。 您还必须提供自定义域名的证书。
其他堆栈溢出线程也可能会有所帮助: 区域/边缘优化的API网关VS区域/边缘优化的自定义域名
请检查以下链接,
https://docs.aws.amazon.com/apigateway/latest/developerguide/how-to-custom-domains.html
https://medium.com/@maciejtreder/custom-domain-in-aws-api-gateway-a2b7feaf9c74
https://aws.amazon.com/premiumsupport/knowledge-center/custom-domain-name-amazon-api-gateway/
https://datanextsolutions.com/blog/setup-custom-domain-for-an-api-in-aws-api-gateway/
我已通过使用 EMAIL 而不是 DNS 验证 CA 证书来解决此问题
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.