没有负载均衡器的 AWS ECS Fargate 用于内部服务

AWS ECS Fargate without Load Balancer for internal services

我正在尝试使用 cloudformation 作为 Fargate 的 ECS 服务加载一些休息服务。 我不想要这些服务的 public 域名。我将从我的 AWS Lambda 函数内部访问它们。 我意识到 AWS Fargate 需要负载均衡,负载均衡器需要证书,证书需要域名。 可能我遗漏了一些东西,但我尝试在没有负载均衡器的情况下加载 AWS Fargate,但我无法从 Lambdas 访问它。

问题是;我如何 运行 我在 ECS 上使用 Fargate 而不使用 Load Balancer 的服务?

使用 ECS Service Discovery 设置私有 DNS 记录,使您的应用程序无需使用负载平衡器或不必创建 public DNS 记录即可发现服务端点。服务发现的工作原理是在 Route 53 中创建可从您的 VPC 中查询的私有 DNS 记录,以便您可以找到服务中所有任务 运行 的 IP 地址。如果您是 运行 多个任务,您将获得多个 A 记录,每个任务一个,因此您需要通过在返回的集合中选择一个随机记录来进行客户端负载平衡。

上面链接的文档有点含糊,所以这里有一些更具体的说明:在控制台中创建服务时,在第 2 步:配置网络中,选中启用服务发现集成复选框。然后指定“创建新的私有命名空间”并为您的命名空间提供一个名称,例如 foo.app。然后 select“创建新发现服务”单选按钮,并为您的服务指定一个名称(例如 service1)。将服务发现(可选)部分中的其余设置保留为默认设置。

现在,您可以从您的 VPC 中查找 service1.foo.app 并返回包含服务中所有任务 运行 的 IP 地址的 A 记录。

这个 medium article 也很好地总结了如何设置服务发现。