我知道私有 API 不不支持自定义域名。
此外,here也回答了类似的问题。
与上述URL丑陋的问题不同,我的问题是私有dns的格式如下:
https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}
问题是主机名是动态的- RestapiId 可以随时更改 CloudFormation堆栈已重新创建。 CF堆栈处于rollback_complete状态且无法更新时,将完成此重新创建。然后,我需要删除堆栈,然后重新创建它,并且使用我的API的所有客户端都需要更新主机名的 RestapiId 部分,这是不可接受的。同样,上面提到的答案(使用代理服务器)也是不可接受的。也许可以通过CF模板手动设置ApiGateway资源ID的解决方案,但据我所知是不可能的。
任何想法如何解决这个问题? 预先感谢。
答案 0 :(得分:0)
看起来这是一种解决方法。您可以创建一个以您的专用终结点为目标的ALB,并将自定义域定位为此ALB。
但是它仍然有一些警告,对我来说似乎不是很可靠。
答案 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模板的一部分。
高级步骤是:
即使在每个Cloudformation部署中restapi id发生更改,这也可以使URL保持不变。