我已经构建了一个AWS CodePipeline,可以将容器构建并部署到Fargate托管的EC2实例中。参考AWS CodePipeline
其中一项服务是网络服务器,我正在尝试通过公共分配的IP地址从公众访问它;但是,这并不是很有用,因为每个部署的容器都会收到一个新的IP地址。
我知道可以设置弹性IP地址或将域指向容器服务,但是我认为有一种更简单的方法。
可以启动EC2实例,并提供公共DNS ...
是否可以使用静态公共DNS记录启动容器服务?如果可以,怎么办?
答案 0 :(得分:4)
尽管它不是免费的,但通常来说,如果您想为ECS服务(代理或EC2)使用公共DNS名称,则可以在负载均衡器(如果需要的话,也可以执行SSL终止)的前面放置它。
因此,当您设置服务时,AWS使创建负载平衡器或将服务添加到现有目标组变得容易。我认为事后您无法更改此设置,因此您需要重新创建服务。
最后,当您在ECS服务之前有一个负载平衡器时,只需在Route53中设置CNAME或A ALIAS(如果您使用的是Route53),即可将DNS名称定向到该负载平衡器。
答案 1 :(得分:0)
您可以使用ECS Service Discovery在私有DNS名称空间中注册容器-不幸的是,使用公共DNS无法实现。
但是,您可以做的是拥有一个脚本
In this article,我们描述了如何使用通用lambda函数精确地做到这一点。
答案 2 :(得分:0)
当我第一次设置 ECS Fargate 服务时,设置向导似乎自动 (?) 为我创建了一个负载均衡器。我能够通过 Amazon ECS -> Clusters -> {my cluster} -> {my service} -> Target Group Name(在“详细信息”选项卡中的“负载平衡”下)-> {my目标组} -> 负载均衡器 -> DNS 名称