如何将流量从公共 API 网关转发到私有 API 网关?

0

【以下的问题经过翻译处理】 我想使用 [私有 API 网关](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-endpoint-types.html#api-gateway-api-endpoint-types -private) 将 Lambda 函数组织到微服务中,同时使它们在公共互联网上不可见。然后我想使用公共 API 网关公开特定调用。

如何将流量从我的公共 API 网关获取到私有 API 网关?

到目前为止我查找的结果是:

过去,对于基于容器的资源,我使用了以下模式:

互联网 -> API 网关 -> VPC Link -> VPC[NLB -> ECS]

但是,我找不到等效的桥接方法来将API 网关的请求流量转发到私有 API 网关。 IE。

互联网 -> API 网关 -> ? -> 私有网关 -> Lambda

我的直觉告诉我,应该存在基于网络的解决方案(相当于 VPC Link),但到目前为止,我得到的的建议是:

  • 使用计算解决(互联网 -> API 网关 -> VPC[Lambda 代理] -> 私有网关 -> Lambda
  • 使用负载均衡器解决(Internet -> API Gateway -> VPC Link -> VPC[NLB -> ALB] -> Private Gateway -> Lambda

这两种方法都给我留下了深刻的印象,因为它们使用了错误的(而且昂贵的!)工具来完成这项工作。 例如: 在不需要计算的地方进行计算,在不需要负载平衡的地方(两个!!)负载平衡器(因为 Lambda 可以有效地自我负载平衡)。

替代解决方案

也许有更好的方法(除了私有 API 网关)将无服务器资源集合组织到微服务中。我正在尝试使用它们来呈现 类似于使用基于容器来实现的微服务接口。例如。记录(开放 API 规范)、身份验证、流量监控等。

如果使用私有 API 网关将内部资源包装到微服务中实际上是一种滥用,并且有更好的方法来做到这一点,我很高兴听到这个消息。

1 Antwort
0

【以下的回答经过翻译处理】 从 API 网关到私有资源的唯一方法是使用 VPC Link,而 VPC Link 需要一个 NLB(在 NLB 和端点之间不需要 ALB)。因此您的路径将是:公共 API -> VPC Link -> NLB -> 私有 API VPC 端点 -> 私有 API。

也就是说,您并不是真的必须使用私有 API。您可以使用 IAM 保护内部 API 的端点,并使用其他方法(例如 Cognito)保护您希望公开的端点。

profile picture
EXPERTE
beantwortet vor 5 Monaten

Du bist nicht angemeldet. Anmelden um eine Antwort zu veröffentlichen.

Eine gute Antwort beantwortet die Frage klar, gibt konstruktives Feedback und fördert die berufliche Weiterentwicklung des Fragenstellers.

Richtlinien für die Beantwortung von Fragen