Amazon-Web-Services

如何在雲形成中的同一 ECS 任務中從另一個容器引用容器主機名或 ip

  • April 28, 2021

我正在嘗試設置一個 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 容器交談。

引用自:https://serverfault.com/questions/1061851