我们有10个实例,我们使用AWS ECS和ELB 部署了应用程序
由于安全原因,API只允许通过特定的IP白名单IP地址进行请求。
因此,我们计划通过代理传递请求
如何通过代理路由API请求
我们正在使用nginx
通过代理路由API请求的任何特定方式都将是有益的
您不需要NGINX作为此用例的代理,我建议考虑使用AWS NAT网关。NAT网关是一种高度可用的AWS管理服务,可以轻松地从亚马逊虚拟私有云(Amazon VPC(中的私有子网内的实例连接到互联网。它是为子网的所有出站流量提供静态IP的理想场所。
为了为集群的出站流量提供具有静态IP(弹性IP(的NAT网关。这将允许您在ECS集群的私有子网中运行的不同任务看起来像是来自外部POV的单个请求实体(在您的情况下,第三方API是外部(。要实现这一点,您必须:
- 创建2个路由表(1个用于私有子网,1个用于公共子网(
- 公用子网上的Internet网关
- 弹性IP地址
- 创建一个NAT网关并将弹性IP连接到它(这将是第三方API的白名单IP(
- 确保您的所有任务都在专有网络的私有子网内运行
- 在路由表中为
private subnets
添加一条规则,将出站0.0.0.0/0
重定向到NAT Gateway
- 在
public subnets
的路由表中添加一条规则,将出站流量0.0.0.0/0
重定向到互联网网关
您应该考虑使用NAT网关。我假设你已经在一个专有网络中拥有了所有的容器,所以你可以在这个专有网络中创建一个新的NAT网关。
你可以参考下面的文章来做这件事:
-
https://docs.aws.amazon.com/appstream2/latest/developerguide/add-nat-gateway-existing-vpc.html
-
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-nat-gateway.html
注意:NAT网关有与其相关的价格。
如果需要,您也可以在Lambda上使用NAT网关提供的弹性IP。