AWS API GateWay не может иметь несколько путей? - PullRequest
0 голосов
/ 28 августа 2018

Я только что настроил свое собственное доменное имя через AWS API Gateway, и теперь у меня есть несколько доменных имен, все маршрутизируемые к одной лямбда-функции. который просто обслуживает веб-страницу.

Настройка выглядит следующим образом:

enter image description here

И у меня есть несколько таких с разными доменами, которые я хочу, чтобы все обслуживали один и тот же контент.

Теперь я хотел бы добавить еще один путь, например / getdata или что-то еще, что будет просто обслуживать некоторые данные из базы данных, а не статический HTML.

Но когда я пытаюсь добавить другой путь, я получаю эту ошибку:

Ошибка Допускается только одно сопоставление базового пути, если базовый путь пуст.

Как мне тогда иметь один домен с несколькими путями?

Я попытался просто использовать подстановочный путь: *, и он работает для нескольких путей, таких как / test или / getdata, но он не работает только с именем домена, и я не могу сказать каждому отдельному пользователю, чтобы убедиться, вводить что-то в лайк / home каждый раз

Ответы [ 2 ]

0 голосов
/ 29 августа 2018

Ааа, я понял!

Так что, к сожалению, страница, на которой показаны пользовательские домены, находится не там, где вам нужно создавать маршруты.

Правильная процедура - создать API (или использовать существующий API и изменить ресурсы) и предоставить ему прокси-ресурс и простой метод GET, исходящий из корневого пути.

Сначала перейдите в консоль API GateWay и создайте новый API.

Затем, когда вы дадите ему имя и выберете тип (региональный или пограничный), появится страница ресурсов

Здесь вы будете делать 2 вещи: создать ресурс перехвата всех прокси, а также получить ресурс для корневого пути.

Шаг 1: Сделать перехват всех прокси-ресурсов:

enter image description here

Нажмите Действия и выберите Создать ресурс

В мастере нажмите «Настроить как прокси» и присвойте ему имя. Оставьте путь к ресурсу как есть. Затем нажмите создать ресурс. {Proxy +} - это нотация, которая сообщает AWS, что этот ресурс должен принимать любой путь, который имеет что-либо после /. Это означает, что / test будет работать так же, как и / test / 1/2/3 / etc. Однако только / один не будет работать!

enter image description here

Далее вы попадете на этот экран, где вы выбираете тип интеграции. Мы хотим лямбда, которая по умолчанию. Убедитесь, что вы выбрали правильный регион, для меня по умолчанию был правильный. Затем начните вводить имя лямбда-функции, и оно должно динамически отобразить список ваших лямбда-функций. выберите тот, который вы хотите для вашего приложения. Если это не сработает, вы можете скопировать и вставить лямбда-ARN из лямбда-функции. Нажмите Сохранить.

Шаг 2. Создание ресурса get для корневого пути

enter image description here

Нажмите на корневой слеш вверху, прямо там, где написано ресурсы. Затем нажмите «Действия» и выберите «Создать метод». Под корневой косой чертой появится небольшой элемент выбора, и там вы должны выбрать GET, а затем нажать маленькую галочку.

enter image description here

Здесь обязательно установите флажок Использовать лямбда-прокси-интеграцию, и тогда остальная часть этой формы должна быть такой же, как и предыдущая. Просто выберите свой регион, лямбда-функцию и нажмите Сохранить.

Шаг 3: развертывание

Как только это будет сделано, перейдите к действиям и выберите Deploy API, дайте ему имя для этапа и некоторое описание, а затем вы готовы присоединить этот API к вашему пользовательскому домену.

Шаг 4: Присоединить

На левой вкладке прокрутите вниз до места, где указано Пользовательские доменные имена, и создайте новое доменное имя (или присоедините его к существующему, если оно у вас есть)

Введите доменное имя и выберите регион или край. Затем выберите свой сертификат (есть много хороших руководств по созданию сертификата через AWS)

Как только вы нажмете «Сохранить», оно будет выглядеть примерно так:

enter image description here

Нажмите Показать сопоставления базовых путей, а затем Изменить.

enter image description here

В поле пути просто оставьте косую черту, в поле Назначение выберите из раскрывающегося списка только что развернутый API. А справа выберите этап, который вы сделали при развертывании API.

Наконец, он будет некоторое время инициализироваться, поэтому, пока вы ждете этого, запомните, что вам нужно сделать набор записей route53 для этого домена и сопоставить его с целевым URL-адресом облачного фронта, который нам дал API GateWay. Этот целевой URL выглядит следующим образом: www.u10dsa3s5iovdk.cloudfront.net. Скопируйте это и перейдите к Маршруту 53, Выберите размещенную зону для своего домена. Создайте набор записей и присвойте ему то же имя, что и у только что созданного домена, поэтому, если вы создали www.example.com, в поле имени на Route 53 вам нужно ввести www. или если вы сделали test.example.com, вам нужно ввести test. Затем выберите «Псевдоним»: «Да», а для «Псевдонима» вставьте URL-адрес облачного фронта из API GateWay.

Когда инициализируется пользовательское доменное имя, вы можете звонить на www.example.com, а также на www.example.com/anything/else/you/want/to/put/here

.

Надеюсь, это поможет любому, кто застрял так же долго, как и я. Пожалуйста, дайте мне знать, если я что-то пропустил, или что-то неточное.

0 голосов
/ 29 августа 2018

В этом случае вам нужно настроить путь, отличный от "/", для каждого API, который вы хотите обслуживать через пользовательский домен. AWS Api Gateway не позволяет обслуживать несколько API в одном пользовательском домене, если вы обслуживаете хотя бы один API без базового пути.

...