Понимание пользовательских доменных имен AWS API Gateway
я пытаюсь понять, как работает пользовательский домен AWS API Gateway.
я создал Regional Custom Domain Name
для моего api, например api.example.com
. В результате получается Target Domain Name
в виде:
aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
если я попытаюсь вызвать API, используя эту ссылку, например:
https://aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com/mymap/mystage/example
но я получаю 403 Forbidden
.
но, если я пойду в Stages
и выберите mystage
большой синий Invoke URL
в форме из:
https://bbbbbbbbbb.execute-api.us-east-1.amazonaws.com/mymap/mystage/example
, которая работает!
Итак, вот мои первые 2 вопроса:
1-Почему API Gateway генерирует 2 разных URL-адреса для одного и того же API (Target Domain Name
и Invoke URL
)?
2 - Почему Invoke URL
работает, а Target Domain Name
не?
вот и вторая часть моего вопроса, я пытаюсь настроить Route 53
на Regional Custom Domain Name
конфигурации, но я не могу найдите любые примеры правильного способа сделать это (только для Edge Optimized Custom Domain Name
).
я попытался создать A
рекорд api.example.com
как Alias
to aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
, но он говорит:
не удалось сохранить набор записей, потому что: - Alias Target содержит недопустимое значение.
я создал CNAME
рекорд api.example.com
установка Alias
to No
(настройки как Yes
приносит то же сообщение об ошибке, как и в A
запись случай) и значение aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
но потом я получаю 404
когда я пытаюсь вызвать свой API как https://api.example.com/mymap/mystage/example
.
что я делаю не так?
EDIT:
этот поток был перемещен на форумы AWS здесь
EDIT 2:
по-видимому, как сказали ребята из поддержки AWS, существует несоответствие в том, как API Gateway обрабатывает пользовательские доменные имена и обычные URL-адреса API Gateway, все документировано в этом AWS Форум нить здесь
2 ответов
консоль Route53 пока не поддерживает API Gateway в качестве целевого псевдонима. Вам нужно будет сделать запись псевдонима с помощью CLI / SDK (или напрямую нажать API R53) и предоставить целевую размещенную зону, указанную на этой странице:http://docs.aws.amazon.com/general/latest/gr/rande.html#apigateway_region
Почему API Gateway генерирует 2 разных URL-адреса для одного и того же API (the Целевое доменное имя и URL-адрес вызова)?
URL вызова конечная точка по умолчанию, которая всегда доступна с действительным сертификатом SSL. Эта конечная точка управляется шлюзом API. Целевое доменное имя является необязательным (необходимо настроить пользовательское доменное имя), а DNS и SSL-сертификат управляются вами/клиентом.
спасибо, Джек!--3-->
Если кто-то хочет понять, что происходит с API Gateway, взгляните на этой теме.
он в основном говорит, что API Gateway обрабатывает обычные URL-адреса (например,aaaaaaaaaaaa.execute-api.us-east-1.amazonaws.com
) отличается от того, как он обрабатывает пользовательские URL-адреса доменных имен (например,api.myservice.com
). Поэтому, когда API Gateway пересылает ваш запрос API в вашу лямбда-функцию, ваша лямбда-функция получит другое path
значения, в зависимости от типа URL-адреса, который вы использовали для вызова ПРИКЛАДНОЙ ПРОГРАММНЫЙ ИНТЕРФЕЙС.
В моем случае я использую контейнер java без сервера, поэтому я могу запустить веб-сервис Джерси на AWS Lambda. Поскольку URL-адрес не передается одинаково для обоих URL-адресов, Джерси вернет 404, когда он получит URL-адрес, который искажен для его конфигурации.
команда AWS API Gateway заявила, что они думают о том, чтобы сделать этот вызов URL единым, но никаких компромиссов на нем до сих пор (январь 2018).
маршрут 53 часть моего вопроса ответил Джек и мне нечего добавить.