如何解决专用API网关的自定义域?

时间:2019-08-27 12:28:52

标签: amazon-web-services aws-api-gateway amazon-vpc

我知道私有 API 不支持自定义域名。

此外,here也回答了类似的问题。

与上述URL丑陋的问题不同,我的问题是私有dns的格式如下:

https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}

问题是主机名是动态的- RestapiId 可以随时更改 CloudFormation堆栈已重新创建。 CF堆栈处于rollback_complete状态且无法更新时,将完成此重新创建。然后,我需要删除堆栈,然后重新创建它,并且使用我的API的所有客户端都需要更新主机名的 RestapiId 部分,这是不可接受的。同样,上面提到的答案(使用代理服务器)也是不可接受的。也许可以通过CF模板手动设置ApiGateway资源ID的解决方案,但据我所知是不可能的。

任何想法如何解决这个问题? 预先感谢。

3 个答案:

答案 0 :(得分:0)

看起来这是一种解决方法。您可以创建一个以您的专用终结点为目标的ALB,并将自定义域定位为此ALB。

本文中的更多详细信息:https://medium.com/@george.mao/enabling-private-apis-with-custom-domain-names-aws-api-gateway-df1b62b0ba7c

但是它仍然有一些警告,对我来说似乎不是很可靠。

答案 1 :(得分:0)

tmn4jq 链接的解决方案(以及 add9 在评论中提供的类似解决方案)在我们的环境中对我有用。

据我所知,附加了您域名的 SSL 证书的内部 ALB 或 NLB 能够充当代理,它将证书和匹配的域名与传入请求相关联。

您使用 API Gateway 的“自定义域名”工具在该域名证书API Gateway之间建立连接。然后,您的 API 网关将接受来自具有预期域名的 ALB 的流量。

这是我之前在 cloudbanshee 上关注的文章的更新链接:https://www.sentiatechblog.com/connecting-to-a-private-api-gateway-over-vpn-or-vpc-peering

答案 2 :(得分:-1)

您可以创建从自定义域名到API GW的映射,作为同一cloudformation模板的一部分。

高级步骤是:

  1. 在API GW上手动创建自定义域名。
  2. 创建一个可创建API GW资源的cloudformation模板
  3. 创建一个API GW映射,该映射将以前创建的自定义域与 Cfn模板中创建的API GW资源。

即使在每个Cloudformation部署中restapi id发生更改,这也可以使URL保持不变。