如何将流量从公共 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개 답변
0

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

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

profile picture
전문가
답변함 5달 전

로그인하지 않았습니다. 로그인해야 답변을 게시할 수 있습니다.

좋은 답변은 질문에 명확하게 답하고 건설적인 피드백을 제공하며 질문자의 전문적인 성장을 장려합니다.

질문 답변하기에 대한 가이드라인