如何启动具有公共DNS的ECS Fargate容器?

时间:2018-12-13 17:30:27

标签: amazon-web-services amazon-route53 amazon-ecs amazon-vpc

我已经构建了一个AWS CodePipeline,可以将容器构建并部署到Fargate托管的EC2实例中。参考AWS CodePipeline

其中一项服务是网络服务器,我正在尝试通过公共分配的IP地址从公众访问它;但是,这并不是很有用,因为每个部署的容器都会收到一个新的IP地址。

我知道可以设置弹性IP地址或将域指向容器服务,但是我认为有一种更简单的方法。

可以启动

EC2实例,并提供公共DNS ...

是否可以使用静态公共DNS记录启动容器服务?如果可以,怎么办?

3 个答案:

答案 0 :(得分:4)

尽管它不是免费的,但通常来说,如果您想为ECS服务(代理或EC2)使用公共DNS名称,则可以在负载均衡器(如果需要的话,也可以执行SSL终止)的前面放置它。

因此,当您设置服务时,AWS使创建负载平衡器或将服务添加到现有目标组变得容易。我认为事后您无法更改此设置,因此您需要重新创建服务。

最后,当您在ECS服务之前有一个负载平衡器时,只需在Route53中设置CNAME或A ALIAS(如果您使用的是Route53),即可将DNS名称定向到该负载平衡器。

答案 1 :(得分:0)

您可以使用ECS Service Discovery在私有DNS名称空间中注册容器-不幸的是,使用公共DNS无法实现。

但是,您可以做的是拥有一个脚本

  • 重新部署并获取容器的公共IP
  • 使用该IP补充您的公共Route 53记录集。

In this article,我们描述了如何使用通用lambda函数精确地做到这一点。

答案 2 :(得分:0)

当我第一次设置 ECS Fargate 服务时,设置向导似乎自动 (?) 为我创建了一个负载均衡器。我能够通过 Amazon ECS -> Clusters -> {my cluster} -> {my service} -> Target Group Name(在“详细信息”选项卡中的“负载平衡”下)-> {my目标组} -> 负载均衡器 -> DNS 名称