Пользовательский домен HTTP API шлюза AWS API со ссылкой VPC на ALB

#amazon-web-services #aws-api-gateway

#amazon-web-services #aws-api-gateway

Вопрос:

Я пытаюсь настроить API с использованием РЕГИОНАЛЬНОГО пользовательского домена, который направляет HTTP-запросы в ALB. Домен зарегистрирован у другого поставщика DNS, поэтому я не буду использовать Route53.

Концепция: /path/to/service —> ALB (прослушиватель: /path/* ) —> ECS

Сначала я попробовал использовать исходный URL-адрес вызова https://cuxxxxmvk0.execute-api.ap-east-1.amazonaws.com/stage/path/to/service , он возвращает ошибку пути контекста ALB (это ожидаемо, потому что ALB получает /stage/path/to/service , который не попадает ни в один префикс).

Затем я создал пользовательский домен с отображением API (без базового пути), который сопоставляется со сценой, и попробуйте вызвать его с предоставленным «именем домена API Gateway» (сгенерированным пользовательским доменом).). Full URL: https://d-yjexxxds3.execute-api.ap-east-1.amazonaws.com/path/to/service Однако он возвращает {"message":"Not Found"}

Доменное имя шлюза API


Итак, мой вопрос здесь:

Как работает «доменное имя шлюза API», созданное пользовательским доменом? Могу ли я напрямую вызвать API с его помощью?

Обязательно ли указывать его CNAME (т.Е. CAME api.mydomain.com d-yjexxxds3.execute-api.ap-east-1.amazonaws.com )?

Могу ли я сделать так, чтобы моя конечная точка api.mydomain.com/path/to/service не имела этапа в path?

Ответ №1:

Из вопроса я вижу, что вы пытаетесь использовать CNAME для разрешения URL / some /path, но это не так, как это работает. Служба DNS сопоставит ваш CNAME только с каким-либо другим URL-адресом. Часть пути (/some/path) останется неизменной для вашего домена или URL-адреса API-GW.

Здесь также следует отметить, что, поскольку вы не используете Route53, вам не нужен Custom Domain Name API-GW. Создайте CNAME, который будет чем-то вроде example.com CNAME d-yjexxxds3.execute-api.ap-east-1.amazonaws.com

Я бы посоветовал вам добавить /stage в свой префикс ALB, чтобы к нему можно было получить доступ через API-GW и ваш собственный домен.

Комментарии:

1. Спасибо за решение. Это была ошибка в вопросе, я имел в CNAME api.mydomain.com d-yjexxxds3.execute-api.ap-east-1.amazonaws.com виду, что я хотел использовать api.mydomain.com/path/to/service вместо того , чтобы api.mydomain.com/stage/path/to/service на самом деле, как конечная конечная точка.

Ответ №2:

Как работает «доменное имя шлюза API», созданное пользовательским доменом? Могу ли я напрямую вызвать API с его помощью?

Да, вы можете

Обязательно ли указывать его (т.Е. ПРИШЕЛ api.mydomain.com d-yjexxxds3.execute-api.ap-east-1.amazonaws.com )?

Это либо CNAME (когда DNS управляется внешним провайдером), либо ПСЕВДОНИМ (напрямую возвращающий записи, если вы управляете DNS в Route53). Пожалуйста, обратите внимание, что вам нужен проверенный сертификат в диспетчере сертификатов.

Могу ли я сделать так, чтобы моя конечная точка была api.mydomain.com/path/to/service без сцены в пути?
https://d-xxxxxxds3.execute-api …

Насколько я знаю, вы должны вызывать API по определенному пользовательскому доменному имени (api.mydomain.com ). Если вызов d-.. домена будет работать, я не уверен

https://api.mydomain.com/path/to/api

Я не уверен, что не работает в вашей настройке. Действительно, в пользовательском сопоставлении доменов у вас может быть сопоставление непосредственно с определенным этапом, поэтому вы можете вызвать API, поскольку https://customdomain/path/to/api у нас он работает таким образом.

Короче говоря, ваша настройка / идея в целом хороши. Вы можете включить ведение журнала на шлюзе API или на этапе, чтобы выяснить, что не работает (если НЕ НАЙДЕНО, повторно настроено API GW или серверным ELB)