为AWS Fargate任务分配域名


13

我有一个AWS Fargate任务在公共子网中运行Web应用程序,因此它具有公共地址。我的问题是如何将域(通过Route 53)连接到该任务,以便在部署该域的新版本时不会中断。

  • 我知道我可以使用ALB / NLB,但我想节省成本。
  • 我不想直接使用公共IP,因为它可能会更改。
  • 我认为该解决方案必须对ENI有所帮助,但是我不确定如何通过Route 53指向它。

任何帮助将非常感激。

谢谢

Answers:


7

在大多数情况下,您很可能希望使用ALB / NLB进行服务发现。尽管有一些成本,但您也可以获得很多好处:一些DoS保护,扩展指标,日志记录,SSL / TLS

但是,您可以使用ECS服务发现

服务发现使用Amazon Route 53自动命名API操作来管理服务任务的DNS条目,使它们可在VPC中发现

支持公共名称空间,但是在创建服务发现服务之前,您必须具有向Route 53注册的现有公共托管区域。

服务发现要求任务使用awsvpc,网桥或主机网络模式。

这是一个博客条目,详细介绍了如何在Fargate中使用服务发现:https://aws.amazon.com/blogs/aws/amazon-ecs-service-discovery/


0

我尝试过了。问题是Fargate使用的公共IP已附加到任务,因此,如果任务重新启动,则会提供新的IP地址,并且需要更新dns记录。这就是为什么使用alb / nlb的原因。

从理论上讲,您可以使用其他方法来管理dns主机记录,例如lambda函数或其他方法。

服务发现注意事项:为服务发现服务创建的DNS记录始终使用任务的私有IP地址而不是公共IP地址注册,即使使用公共名称空间也是如此。

https://forums.aws.amazon.com/thread.jspa?threadID=270599


0

ECS开发人员指南所述

Amazon ECS不支持将服务注册到公共DNS名称空间

因此,没有机会通过ECS Service Discovery开箱即用地注册公共域。但是,您可以做的是在部署后使用AWS SKD来获取容器的公共IP地址,并将其注册到公共Route 53托管区域中。

本文介绍了一种使用lambda函数的方法,可以在重新部署容器时准确地做到这一点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.