Назад | Перейти на главную страницу

AWS Gateway API: развертывание в нескольких регионах из одного домена

У меня есть шлюз API с лямбда-поддержкой, который я развернул в двух регионах. Эти два API полностью идентичны. У меня есть два разных URL-адреса, например

* .execute-api.us-east-1.amazonaws.com * .execute-api.eu-west-1.amazonaws.com

Моя идея заключалась в определении одних и тех же пользовательских доменов в двух регионах и использовании функции геолокации Route53, обслуживающей api из ближайшего к пользователю региона. Но после определения настраиваемого URL-адреса в одном регионе, когда я пытаюсь определить во втором регионе, я получаю сообщение об ошибке, в котором говорится, что этот домен уже определен в другом распределении облачного интерфейса.

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

Спасибо.

К сожалению, это в настоящее время невозможно. Главный блокиратор - CloudFront. MikeD @ AWS предоставляет информацию на своих форумах:

Когда вы создаете собственное доменное имя, оно создает связанную раздачу CloudFront для доменного имени, а CloudFront обеспечивает глобальную уникальность доменного имени.

Если дистрибутив CloudFront с доменным именем уже существует, CreateCloudFrontDistribution завершится ошибкой, и API Gateway вернет ошибку, не сохраняя доменное имя или не позволяя вам определить связанный с ним API.

Таким образом, в настоящее время (29 июня 2016 г.) нет способа заставить API-шлюз в нескольких регионах обрабатывать одно и то же доменное имя.

У AWS нет обновлений о предоставлении необходимого с момента подтверждения существования открытого запроса функции 4 июля 2016 г. Тема AWS Form для получения обновлений

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

У меня есть пара идей.

CloudFront, как было сказано выше, с CloudFront нельзя балансировать нагрузкой. Так что ваши варианты, казалось бы,

  1. Используйте единый источник с CloudFront. Задержка 85 мс между восточным и западным побережьями США не так уж и плохо. По сравнению с задержкой между местом, где я живу (Новая Зеландия) и США, до 250 мс, это довольно мало.
  2. Удалите CloudFront, используйте маршрутизацию на основе задержки Route 53, чтобы напрямую попасть в шлюз API. При этом вы можете использовать столько регионов, сколько захотите - добавьте один в Сиднее / Азия, если у вас там есть клиенты.