Назад | Перейти на главную страницу

Как отправлять HTTP-запросы между сервисами AWS ECS

В настоящее время я пытаюсь понять, как настроить связь между сервисами ECS. Я планирую установить следующую схему:

  1. Серверная служба
  2. Фронтальный сервис
  3. Балансировщик нагрузки одного приложения

У меня есть следующие варианты:

  1. Настройте 2 целевые группы для ALB и пересылайте запросы в соответствии с путем. Например, alb.amazonaws.com/backend/ перешлет запрос в backend-target-group который будет предоставлять запрос внутренним задачам ECS.
  2. В каждой задаче ECS запустите сценарий, который будет извлекать IP-адреса запущенных задач с помощью AWS cli и обнаружения сервисов. Не уверен, что это сработает, и это относительно сложно проверить.

Ни один из них не кажется правильным. Я не хочу использовать отдельный ALB для каждой услуги из-за финансовых ограничений. Я думаю о каком-то внутреннем DNS-имени для служб ECS. Я изучил следующие ссылки, но не могу понять, как применить это в моем случае.

Связанная проблема: Контейнерная связь AWS ECS

Итак, в идеале я хотел бы достичь: иметь внутреннее DNS-имя для серверных служб и отправлять запросы из внешних служб в бэкэнд.

Вы в значительной степени правильно рассмотрели варианты.

Обнаружение сервисов ECS было бы моим первым выбором - все контейнеры будут автоматически регистрироваться в домене обнаружения служб и будут доступны таким образом. Легко, прозрачно, дешево.

Балансировщик нагрузки внутреннего приложения с разными путями для разных целевых групп было бы моим вторым выбором. Вы не хотите смешивать внешний и внутренний трафик на одном ALB, но наличие двух - внутреннего и внешнего - является вполне допустимой архитектурой. Может стоить дополнительных 20 долларов в месяц или около того за еще один ALB.

AWS App Mesh - Я лично с этим не работал, но похоже, что он вполне может сделать то, что вам нужно. Название говорит Сеть на уровне приложений для всех ваших услуг

API-шлюз тоже вариант. Вашему бэкэнду могут потребоваться небольшие изменения для работы с этим, но ничего серьезного.

Надеюсь, это поможет :)