Маршрутизация на основе URL-адресов шлюза AWS HTTP API

#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, но на разных платформах. Я также уточню это в своем посте.