Понимание пользовательских доменных имен 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 часть моего вопроса ответил Джек и мне нечего добавить.