Amazon web services AWS Fargate实例无法向其他实例发出请求

Amazon web services AWS Fargate实例无法向其他实例发出请求,amazon-web-services,amazon-ecs,amazon-vpc,aws-fargate,aws-security-group,Amazon Web Services,Amazon Ecs,Amazon Vpc,Aws Fargate,Aws Security Group,我有两个ECS集群,都运行fargate 1.3任务,我们称它们为任务A和任务B。两个任务都有网络类型awsvpc,都有自动分配的公共IP。此外,两个集群/任务都位于同一VPC中。任务A与安全组A关联,任务B与安全组B关联,以及与安全组连接的负载平衡器。我正在尝试从任务A向任务B发出http请求。我100%确定已正确设置安全组,即: 安全组A: 去任何地方 安全组B: 进入安全组A端口范围所有、协议所有、类型所有流量 当我试图从A向B发出请求时,我得到一个超时错误。我知道这是一个安全组错误,因为

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

安全组A:

去任何地方 安全组B:

进入安全组A端口范围所有、协议所有、类型所有流量 当我试图从A向B发出请求时,我得到一个超时错误。我知道这是一个安全组错误,因为如果我创建一个Source=everywhere的入口规则,它就会工作。此外,如果我进入并检查fargate任务A的公共IP地址,并将该IP地址添加到安全组B的入口,它也可以工作


这里发生了什么?

由于您使用的是公共互联网IP,因此流量会从VPC之外返回,此时来自安全组A的流量会丢失。您需要使用专用IP来保持专有网络内的所有网络流量。

由于您使用的是公共互联网IP,流量从专有网络外部进入专有网络,此时来自安全组A的流量丢失。您需要使用专用IP来保持专有网络内的所有网络流量。

谢谢,这很有意义。我为任务A使用了一个自动分配的公共IP,这样它就可以访问internet,既可以从ECR中提取,也可以从任务A中发出一些其他HTTP请求,这些请求访问AWS之外的内容。我认为唯一的解决办法是将NAT网关连接到我的私有子网,这是正确的吗?我现在没有一个Fargate任务,但不是每个任务都有一个私有IP吗?您只需要通过任务B的私有IP将任务A更改为引用任务B。谢谢!回到这里,我可以通过将服务发现添加到fargate任务来实现这一点,否则这些私有IP将在重新创建任务时发生更改,并从任务A而不是负载平衡器端点调用服务发现端点。谢谢,这很有意义。我为任务A使用了一个自动分配的公共IP,这样它就可以访问internet,既可以从ECR中提取,也可以从任务A中发出一些其他HTTP请求,这些请求访问AWS之外的内容。我认为唯一的解决办法是将NAT网关连接到我的私有子网,这是正确的吗?我现在没有一个Fargate任务,但不是每个任务都有一个私有IP吗?您只需要通过任务B的私有IP将任务A更改为引用任务B。谢谢!回到这里,我可以通过向fargate任务添加服务发现来实现这一点,否则,当任务重新创建时,这些私有IP将改变,并从任务A而不是负载平衡器端点调用服务发现端点。