从EC2访问受IP限制的外部服务

时间:2019-12-10 22:15:02

标签: amazon-web-services amazon-ec2

可以说我有一个运行在N ec2实例上的服务集群。最重要的是,我有Amazon EKS和Elastic Loadbalancer。我在AWS之外运行了一项不受我管理的服务,其中有一个我在AWS中的服务正在通过HTTP请求使用的帐户。当我为该外部服务注册帐户时,系统要求我提供将使用该外部服务的服务IP(范围)。这是我的问题。目前,可以说我有3个带有弹性IP地址(静态)的EC2实例,因此我可以将这三个IP地址提供给该外部服务提供商,并且一切正常。但是将来我可能会添加更多的EC2实例以进行扩展,并且将外部服务中的新IP地址列入白名单是很痛苦的。在某些情况下,这些白名单更改请求可能需要一周的时间才能由外部服务提供商批准,而我没有时间。更进一步,访问此外部服务是我为EC2实例选择静态IP的唯一原因。因此,如果可能的话,我将放弃弹性IP。

所以我的问题是我该如何采取行动,以便如果我在集群中的随机实例中在AWS外部发出请求,外部服务提供商将始终为我看到与服务使用者相同的IP地址?

免责声明:我实际上尚未运行该设置,但是如果这是可行的选择,我正在研究之中。所以请原谅我的问题由于某些显而易见的原因而变得愚蠢

3 个答案:

答案 0 :(得分:1)

Network address translation (NAT)之类的东西可以解决您的问题。具有弹性IP的NAT gateway,用于重新路由通过它的所有流量。

如果您的数据流量很大,则由AWS作为服务提供的

NAT网关可能会很昂贵,因此您可以自己创建NAT instance,但是设置和维护起来有点复杂。

列出了NAT网关和NAT实例之间的主要区别here

下面的示例假定EC2实例位于私有子网中,但不一定是这种情况。

simplified solution using NAT gateway

答案 1 :(得分:0)

我相信您的环境中需要一个具有弹性IP的代理服务器。基本上,您可以使用NGINX / Apache之类的东西,并使用弹性IP对其进行配置。配置Web服务器以为您的EC2实例提供一个端点,并进行代理传递给外部端点。

要获得高可用性,您可以在每个可用区中管理代理,理想情况下,使用自动伸缩组进行配置,以在每个可用区中至少保留一个实例。通过这种方法,您将需要确保从弹性IP池中分配了公共IP。

通常,主机名是IP地址的更好替代,以避免出现这种情况,因为无论后面的IP是什么,它们都可以提供静态终结点。不确定是否可以使用外部API提供程序探索该路径。当存在基于静态IP的路由/白名单规则时,可能会充满挑战。

答案 2 :(得分:0)

这就是NAT Gateway的作用。 NAT网关附加了弹性IP,并允许VPC内的实例使用网关的静态地址透明地建立出站连接。