为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.