【问题标题】:AWS Fargate instance unable to make a request to another instanceAWS Fargate 实例无法向另一个实例发出请求
【发布时间】:2020-12-13 01:21:34
【问题描述】:

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

安全组 A:

  • 到任何地方的出口

安全组 B:

  • 进入安全组 A(端口范围全部、协议全部、类型“所有流量”)

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

这里发生了什么?

【问题讨论】:

    标签: amazon-web-services amazon-ecs amazon-vpc aws-fargate aws-security-group


    【解决方案1】:

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

    【讨论】:

    • 谢谢,这是有道理的。我为任务 A 使用了一个自动分配的公共 IP,以便它可以访问互联网(既可以从 ECR 中提取,也可以从任务 A 中提取的一些其他 HTTP 请求访问 AWS 之外的内容)。我是否认为这里唯一的解决方法是将 NAT 网关附加到我的私有子网?
    • 我目前没有可以查看的Fargate任务,但不是每个任务也都有私有IP吗?您只需将任务 A 更改为通过任务 B 的私有 IP 引用任务 B。
    • 谢谢!回到这里,我可以通过将服务发现添加到 Fargate 任务(否则这些私有 IP 将在重新创建任务时更改),并从任务 A 而不是负载均衡器端点调用服务发现端点.
    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 2023-01-17
    • 1970-01-01
    • 2013-02-23
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多