Amazon-Web-Services
如何在 AWS ECS 服務之間發送 HTTP 請求
目前,我正在嘗試弄清楚如何配置 ECS 服務之間的通信。我計劃進行以下設置:
- 後端服務
- 前台服務
- 一個應用程序負載均衡器
我有以下選擇:
- 為 ALB 配置 2 個目標組,並根據路徑轉發請求。例如,
alb.amazonaws.com/backend/
將請求轉發給backend-target-group
將請求提供給後端 ECS 任務的請求。- 在每個 ECS 任務中執行一個腳本,該腳本將使用 AWS cli 和服務發現檢索正在執行的任務的 IP 地址。不確定這是否可行,而且測試起來相對困難。
它們似乎都不是正確的方法。由於財務限制,我不想為每個服務使用單獨的 ALB。我在想的是 ECS 服務的某種內部 DNS 名稱。我檢查了以下連結,但無法弄清楚如何將其應用於我的案例。
- https://docs.aws.amazon.com/cloud-map/latest/dg/what-is-cloud-map.html
- https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-discovery.html
- https://aws.amazon.com/blogs/aws/amazon-ecs-service-discovery/
- https://aws.amazon.com/blogs/compute/task-networking-in-aws-fargate/
相關問題: AWS ECS 容器通信
因此,理想情況下,我想要實現的是:為後端服務提供一個內部 DNS 名稱,並將來自前端服務的請求發送到後端。
你幾乎已經涵蓋了正確的選項。
**ECS 服務發現**將是我的首選——所有容器將自動在服務發現域中註冊,並且可以通過這種方式訪問。簡單、透明、便宜。
為不同目標組提供不同路徑的內部應用程序負載均衡器將是我的第二選擇。您不想在一個 ALB 上混合面向外部的流量和內部流量,但是擁有兩個(內部和外部)是一種完全有效的架構。可能值得多花 20 美元/月左右再買一個 ALB。
AWS App Mesh - 我沒有親自使用過,但看起來它可以滿足您的需求。標題為您的所有服務的應用程序級網路
**API 網關**也是一種選擇。您的後端可能需要進行一些細微的更改才能使用,但沒什麼大不了的。
希望有幫助:)