[英]Can I assign a long-term public DNS name to a Fargate task within a ECS?
[英]How can you launch ECS Fargate containers having a public DNS?
我构建了一个 AWS CodePipeline 来构建容器并将其部署到 Fargate 托管的 EC2 实例中。 参考AWS CodePipeline
其中一项服务是 Web 服务器,我正尝试通过公共分配的 IP 地址从公众访问它; 然而,这并不是很有用,因为每个部署的容器都会收到一个新的 IP 地址。
我知道可以设置弹性 IP 地址或将域指向容器服务,但我认为有一种更简单的方法。
EC2 实例可以通过提供公共 DNS 的选项启动...
是否可以使用静态公共 DNS 记录启动容器服务? 如果是这样,如何?
虽然它不是免费的,但通常如果你想要一个 ECS 服务(fargate 或 EC2)的公共 DNS 名称,你会在它前面放置一个负载均衡器(如果你愿意,它也可以执行 SSL 终止)。
因此,当您设置服务时,AWS 可以轻松创建负载均衡器或将您的服务添加到现有目标组。 我认为事后您无法更改它,因此您可能需要重新创建服务。
最后,当您在 ECS 服务前面有负载均衡器时,您只需要在 Route53 中设置 CNAME 或 A ALIAS(如果您使用的是 Route53)以将 DNS 名称定向到该负载均衡器。
AWS 在 2016 年的 AWS Compute 博客上有一个演练,快速描述了如何设置 ECS 服务并使用应用程序负载均衡器公开它。
还有另一条路径——使用 ECS 服务发现和 AWS CloudMap,您可以使用 API 网关。 您的负载平衡选项更加有限,但 API 网关按使用量而非小时数计费,因此它可以潜在地节省低容量服务的成本。 您还可以在多个 ECS 服务前使用单个 API 网关,无论如何有些人会想要这样做。 这种方法不太常用,但可能是某些用途的正确途径。
当我第一次设置 ECS Fargate 服务时,设置向导似乎自动 (?) 为我创建了一个负载均衡器。 我能够通过 Amazon ECS -> Clusters -> {my cluster} -> {my service} -> Target Group Name(在“详细信息”选项卡中的“负载平衡”下)-> {my目标组} -> 负载均衡器 -> DNS 名称
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.