AWS API 私有网关 API 自定义域名

AWS API Gateway Private API Custom Domain Name

AWS 文档说,

Custom domain names are not supported for private APIs.

来源:https://docs.aws.amazon.com/apigateway/latest/developerguide/apigateway-private-apis.html

这到底是什么意思?我可以将自定义域名附加到私有 API.

但是我遇到了 SSL 证书的问题。

API 网关有 4 个选项:

REST API Private 与 REST APIs 相同,只是它只能从 VPC 内访问。要从 VPC 内访问 REST API,需要 interface VPC endpoint。如果您不使用接口 VPC 端点,则可以通过 NAT 访问 API 网关上的 REST API,NAT 通过互联网网关或仅通过互联网网关。在任何一种情况下,这都是 public REST API 通过互联网。

使用 VPC 接口端点时,AWS 会生成一个自定义域名。此域名在 VPC 内用于定位端点并重定向到 REST API。因此,您此时无法指定自己的自定义域名。您可以为面向 REST API.

的 public 指定自定义域名

因为不能指定自己的自定义域名,所以不能使用自己的自定义证书。

因为 VPC 接口端点在内部称为 API 网关 TLS 1.2 is used. This cannot be changed either

如果您想使用自己的证书,则需要定义自己的域名,并使用 API 中定义的面向 REST API 的 public 网关。

或者,您可以使用 VPC 内部的自定义域名,为该域名生成证书。将证书放在像 NGINX 这样的代理服务器上,使用代理来前端接口端点。接口端点使用 Elastic Network Interface (ENI) and therefor has a Security Group,您可以使用安全组限制流量来自代理。在这种情况下,证书将驻留在代理服务器上,而 TLS 将在代理服务器上终止。然后,代理服务器将通过新连接访问 REST API。

为专用端点使用自定义域的一个选项是在 API 网关前面放置一个(面向内部的)应用程序负载平衡器。 将侦听器添加到 ALB 时,您可以选择指定证书。然后使用您的域作为 Route53 中的别名指向您的 ALB。 总结:

  1. 创建指向 ENI IP 地址的目标组 com.amazonaws.eu-west-1.execute-api
  2. 创建面向内部的 Application Load Balancer
  3. 将目标组添加为侦听器,指定默认 SSL/TLS 证书 使用您的域名。
  4. 将您的域指向 Route53 中的 ALB 别名
  5. 您可以选择在您的前面放置一个网络负载均衡器 ALB 如果你需要给 ALB 一些 on-prem 地址。在这种情况下, 您将域指向 on-prem(私有)地址而不是 ALB 别名。创建指向您的 ALB 的新目标组并将其添加为 NLB 中的侦听器。