我正在寻找从运行在ECS集群"B“中的另一个容器访问运行在ECS集群"A”中的容器中的服务的最佳方法。我不想公开任何端口。
目前我找到了一种在同一个VPC下工作的方法--将集群B的实例的安全组添加到集群A的安全组入站规则中,之后集群A的服务通过‘内网ip地址’在运行在B中的容器中可用。
但这需要添加此安全规则(这并不方便),并且不适用于不同的区域。也许有更好的解决方案,可以同时覆盖两种情况-相同的VPC和地域,以及不同的VPC和地域?
发布于 2020-11-25 06:40:50
对于您的问题,最灵活的解决方案是依赖于某种服务发现。AWS-native将使用Route 53 Service Registry或AWS Cloud Map。后者是较新的,也是文档中推荐的。查看以下两个链接:
你可以选择像Consul这样的开源解决方案。
如果您只需要链接两个单独的容器,那么所有这些都可能是多余的。在这种情况下,您可以创建一个小脚本,该脚本可以作为Lambda部署,用于查询AWS API并检索目标信息。
编辑:由于您希望在同一服务上公开多个端口,因此还可以使用负载均衡器并为您的服务声明多个目标组。这样,您就可以通过负载均衡器在容器之间进行通信。请注意,这可能会导致成本增加,因为流量要通过lb。
以下是关于这种方法的答案:https://stackoverflow.com/a/57778058/7391331
发布于 2020-12-02 23:40:24
为了避免添加自定义安全规则,您可以简单地在地域之间执行一些私有网络对等操作,这应该允许来自地域A的私有网络1中的实例,查看来自地域B的私有网络2中的实例。This document介绍了如何建立这种连接。同一文档还提供了如何链接相同地域的私有网络的参考。
https://stackoverflow.com/questions/64971893
复制相似问题