【以下的问题经过翻译处理】 我想使用 [私有 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 网关将内部资源包装到微服务中实际上是一种滥用,并且有更好的方法来做到这一点,我很高兴听到这个消息。