#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 с его помощью?
Обязательно ли указывать его 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)