AWS ECS如何从一个容器向另一个容器调用服务

我有一个具有2个EC2实例的Auto Scaling组的ECS群集。 另外我有3个服务,每个服务都有自己的任务定义。 每个EC2实例为每个服务运行一个docker容器。 因此,我在每个EC2实例中都有3个docker容器。

每个docker集装箱只需运行一个弹簧启动应用程序。 由于我有3个服务,那么我有3个春季启动应用程序。 同样,一个容器只运行这3个spring启动应用程序中的一个。 每个应用程序公开一个rest的API,诸如/ service1或/ service1 / resource1之类的URL下的POST,GET等服务。 这里重要的一点是我在容器的主机中使用dynamic端口映射。

我有一个端口443的外部(面向Internet的)ALB,它有3个目标组。 根据URL,请求将转到3个应用程序(或容器)之一。

我的问题有时是应用程序需要向应用程序B发出http请求。我的EC2实例位于私有子网中,而我的ALB位于公有子网中。 因此,如果我使用ALB将容器内的http请求发送给另一个容器,那么请求将通过NAT进行,而且由于NAT的公共IP不是ALB的安全组的一部分,无法在端口443上连接。我有2种方法可以使这项工作:

  • 在白名单白名单0.0.0.0/0的安全组中。 我不想这样做,因为整个世界都可以访问。

  • 在ALB的安全组中,将NAT的公共IP列入白名单。 我不确定这种方法。 这是可取的吗?

我试图实现的第三个选项是有一个第三个负载平衡器,一个内部的。 但是我迷失在这里,按照AWS文档,您只能将1负载均衡器分配给您的服务。 而且由于我们使用的是dynamic端口映射,我没有看到手动创buildALB并使用dynamic自动分配的端口的方法。

你们如何在容器之间进行这种连接,其中一个容器使用其他服务提供的服务?

作为最后的评论,我使用云形成所有。 没有从控制台手动设置。

谢谢,