AWS ECS上的Kafka,如何在不知道实例的情况下处理advertised.host?

我试图让Kafka在AWS ECS容器上运行。 我已经使用spotify/kafka 图像在本地docker环境中正常工作

为了在本地工作,我需要确保设置了ADVERTISED_HOST环境variables 。 ADVERTISED_HOST需要被设置为容器的外部IP,否则当我尝试连接时只是给我connection refused

我的本地docker-compose.yaml对于kafka容器有这个:

  kafka: image: spotify/kafka hostname: kafka environment: - ADVERTISED_HOST=192.168.0.70 - ADVERTISED_PORT=9092 ports: - "9092:9092" - "2181:2181" restart: always 

现在的问题是,我不知道IP将会是什么,因为我不知道这将运行在哪个实例。 那么如何设置这个环境variables呢?

您的入口点脚本需要在启动时调用EC2元数据服务 (在本例中为http://169.254.169.254/latest/meta-data/local-hostname )以获取外部到docker工人的主机名并设置该variables。

样品:

 [ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/local-hostname ip-10-251-50-12.ec2.internal