Leo*_*Leo 25 amazon-web-services amazon-ecs
我有一个 AWS Fargate 任务在公共子网中运行 Web 应用程序,因此它有一个公共地址。我的问题是如何将域(通过 Route 53)连接到该任务,以便在部署它的新版本时不会中断。
任何帮助将非常感激。
谢谢
M. *_*tki 15
在大多数情况下,您很可能希望使用 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/
我不相信 @m-glatki 的答案是正确的 - 正如 @andreas-pasch 所提到的,您不能将服务发现用于公共 IP 地址。
我发现实现这一点的唯一方法是创建一个由 Cloudwatch 事件触发的 Lambda 函数,以便当容器达到“RUNNING”状态时。我的第一次尝试是通过启动脚本获取容器元数据并在启动时更新 Route 53,但这是一个死胡同。
这里有一个很好的JavaScript 指南(我用 Python 和 Terraform 重新编写)。我认为缺少的是将 ECS 集群 ARN 添加到“详细信息”下的 Cloudwatch 事件模式;否则该函数可能会在每个容器启动时触发。ECS 事件文档可能对具体信息有用。
AWS 有EC2 指南,但我没有费心去研究他们的代码;如果您也喜欢 Python,可能会很方便参考。
注意:服务发现适用于私有 IP 地址。
| 归档时间: |
|
| 查看次数: |
15014 次 |
| 最近记录: |