AWS Fargate 实例无法向另一个实例发出请求

AWS Fargate instance unable to make a request to another instance

我有两个 ECS 集群,都是 运行 fargate 1.3 任务(我们称它们为任务 A 和任务 B)。这两个任务的网络类型都是 awsvpc,并且都具有自动分配的 public IP。此外,clusters/tasks 都在同一个 VPC 中。任务 A 与安全组 A 关联,任务 B 与安全组 B 关联(以及也与安全组连接的负载均衡器)。我正在尝试从任务 A 向任务 B 发出 http 请求。我 100% 确定我已正确设置安全组,即:

安全组 A:

安全组 B:

当我尝试从 A 向 B 发出请求时,出现超时错误。我知道这是一个安全组错误,因为如果我创建一个带有 Source = everywhere 的入口规则,它就会起作用。此外,如果我进去检查 fargate 任务 A 的 public IP 地址,并将该 IP 地址添加到安全组 B 的入口,它也有效。

这里发生了什么?

由于您使用的是 public(互联网)IP,流量从 VPC 外部传出并返回,此时来自安全组 A 的流量丢失了。您需要使用私有 IP 将所有网络流量保留在 VPC 内。