#amazon-web-services #aws-api-gateway
Вопрос:
Итак, вот мое требование. Я хочу, чтобы у моих клиентов были конечные точки, такие как:
https://customer-a.mydomain.com
https://customer-b.mydomain.com
Теперь, когда мы получаем доступ к customer-a
конечной точке выше, я ожидаю, что AWS направит запрос в службу ECS Fargate клиента A, которая сбалансирована по нагрузке https://customer-a-elb.mydomain.com
Аналогично, когда мы обращаемся к customer-b
конечной точке выше, я ожидаю, что AWS направит запрос в службу ECS Fargate клиента B, которая сбалансирована по нагрузке https://customer-b-elb.mydomain.com
План состоял в том, чтобы из моего DNS направлять всех, кто получает доступ *.mydomain.com
(запись DNS с подстановочными знаками), к одному и тому же шлюзу API в AWS. И позвольте шлюзу API определить, к какому балансировщику нагрузки направлять маршрут, в зависимости от базового URL-адреса.
Я надеялся, что этого можно легко достичь с помощью AWS API Gateway, но до сих пор я не смог найти решение для реализации этого. Из того, что я понимаю, можно выполнять маршрутизацию только на основе пути (в отличие от маршрутизации на основе базового URL, что действительно то, что мне нужно в данном случае).
Любые намеки были бы очень признательны.
ПОЯСНЕНИЕ : согласно моему требованию, обоим клиентам необходимо получить доступ к одному и тому же пути /myservice, но на разных ELBS. Например, для
https://customer-a.mydomain.com/service1 -> https://customer-a-elb.mydomain.com/service1
https://customer-b.mydomain.com/service1 -> https://customer-b-elb.mydomain.com/service1
Почему — то я думаю, что маршрутизация на основе путей не может справиться с этим сценарием, так как мы можем определить только один маршрут для пути.
Комментарии:
1. Почему бы не сделать это на маршруте № 53?
2. Потому что все мои DNS-записи хранятся в другом месте, и я не хочу переходить на Route53 только из-за этого требования. Вы хотите сказать, что это единственный способ достичь этого?
Ответ №1:
Шлюз API поддерживает маршрутизацию на основе путей. И вы можете настроить, какие ресурсы будут получать входящие запросы API на основе URL-адреса, запрошенного клиентом. Следующий пример может вам помочь.Ссылка
Комментарии:
1. Ну, эта ссылка, хотя и выглядит великолепно на высоком уровне, дьявол кроется в деталях, я думаю. В частности, я хотел бы знать, как определить маршруты для требования, которое я изложил в своем посте. В этой статье предполагается, что клиент1 обращается к сервису1, а клиент2 обращается к сервису2 — следовательно, определение маршрутов является простым. Для меня мне нужны оба клиента для доступа к сервису1, но на разных платформах. Я также уточню это в своем посте.