如何在ECS上为运行UDP服务的容器添加别名?

Dan*_*Dan 6 amazon-web-services amazon-ecs

我正在尝试在容器中运行logstash来对抗ECS,它将通过UDP侦听日志消息.

我希望我的应用程序能够将消息发送到例如logging.mydomain.com,而无需知道可能更改的基础IP.

通常我会CNAME一个ELB,但ELB不支持UDP.我是否需要在此处进行某种服务发现,或者我能做些什么更简单的事情?

nat*_*eck 2

我建议使用 Amazon Route 53 DNS 循环来解决此问题。

这些作品是:

  • 附加到 ECS 中的 Logstash 服务的 Cloudwatch Events 流的 Lambda 函数。只要任务状态发生变化,就会调用此 lambda 函数,因此它会在新的 Logstash 任务启动或停止时运行,并更新 Route 53 记录
  • 当您的应用程序解析 dns 记录时,它将获得循环方式的 IP 地址之一,并使用其 IP 直接与托管 Logstash 容器的实例进行通信。
  • 您的 ECS 服务需要有一个静态分配的主机端口,而不是动态端口。

有一个参考架构更详细地描述了这一点,并为您提供了示例代码:https ://aws.amazon.com/blogs/compute/service-discovery-for-amazon-ecs-using-dns/