如何将流量从公共 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 网关将内部资源包装到微服务中实际上是一种滥用,并且有更好的方法来做到这一点,我很高兴听到这个消息。

profile picture
专家
已提问 5 个月前25 查看次数
1 回答
0

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

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

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则