Amazon-Web-Services
如何在雲形成中的同一 ECS 任務中從另一個容器引用容器主機名或 ip
我正在嘗試設置一個 AWS ECS 集群,該集群具有一個任務,該任務具有 3 個用於 prometheus、promscale 和 prometheus-ecs-discovery 的獨立容器。
我試圖弄清楚如何將
PROMSCALE_HOSTNAME
我的 prometheus 容器中的 env var 動態設置為 promscale 容器的主機名或 ip,因為我最終在配置文件中使用這個值,以便 prometheus 容器可以與 promscale 對話容器。有什麼辦法可以做到這一點,還是我必須在我的 VPC 中創建一個負載均衡器來處理這個問題?
PrometheusTask: Type: AWS::ECS::TaskDefinition Properties: Family: !Sub "${Stage}-prometheus" ContainerDefinitions: - Name: !Sub "${Stage}-prometheus-container" Image: myorg/prometheus:latest Environment: - Name: STAGE Value: !Ref Stage - Name: PROMSCALE_HOSTNAME # <-- I WANT THIS VALUE TO BE THE HOSTNAME OR IP OF THE PROMSCALE CONTAINER Value: !Sub "${Stage}-promscale-container" - Name: !Sub "${Stage}-prometheus-ecs-discovery-container" Image: myorg/prometheus-ecs-discovery:latest Environment: - Name: AWS_REGION Value: !Ref AWS::Region - Name: !Sub "${Stage}-promscale-container" Image: myorg/promscale:latest PortMappings: - ContainerPort: 9201
如果您
awsvpc
為您的任務使用網路模式(這將是一個好主意),您的任務基本上將有一個單一的網路名稱空間。這意味著您可以使用localhost
. 換句話說,如果您嘗試localhost:9201
從同一任務中的任何其他容器訪問,您最終將與您的 promscale 容器交談。