3

Предположим, мне нужен шлюз API, который будет запускать Lambdas, и я хочу создать лучшую глобально распределенную исполняющую инфраструктуру. Кроме того, я буду использовать Cognito для аутентификации, Dynamodb и S3 для пользовательских данных и статической статистики.Развертывание глобальной инфраструктуры AWS с помощью API Gateway, Lambda, Cognito, S3, Dynamodb

Мое приложение находится в myapp.com

Сначала пользователю получить статический передний конец от ближайшего места:

пользователя ===> край местоположения в CloudFront < --- S3 в любом регионе (with static front end)

После этого необходимо связаться с API Gateway.

пользователь ===> API Gateway ---> Lambda ---> S3 || Cognito || Dynamodb

API Шлюз может находиться в нескольких регионах, и несмотря на то, распространяется с CloudFront, каждая конечная точка указывает на Lambda, расположенной в данном регионе: Пусть говорят, я развернуть API на ес-запад-1. Если запрос отправлен из США, даже если мой API находится на CloudFront, Lambda, который он запускает, находится на eu-west-1, поэтому латентность будет в любом случае высокой.

Чтобы избежать этого, мне нужно развернуть другой API у нас - восток-1 и все мои Лямбда. Этот API будет указывать на те Lambdas

Если я использую один API для каждого отдельного региона, мне понадобится одна конечная точка для каждого из них, и интерфейс должен решить, какой из них нужно запросить. Но как мы можем узнать, какая из них самая близкая?

Идеальный сценарий - это единая глобальная конечная точка на api.myapp.com, которая собирается перейти к ближайшему API-шлюзу, который также управляет Lambdas, расположенным в этом регионе. Могу ли я настроить это с помощью маршрутизации латентности Route 53 с несколькими записями A, указывающими на каждый api-шлюз?

Если это неправильный способ сделать это, можете ли вы указать мне в правильном направлении?

ответ

0

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

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

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

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

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

0

заказ [email protected]

Q: Что такое Lambda @ Край? Lambda @ Edge позволяет запускать код через AWS в глобальном масштабе без предоставления ресурсов или управления серверами, отвечает на конечных пользователей с наименьшей сетевой задержкой. Вы просто загрузите свой код Node.js в AWS Lambda и настройте свою функцию как , вызванную в ответ на запросы Amazon CloudFront (т. Е. Когда запрашивается запрос зрителя , когда запрос отправляется или возвращается назад из источника, и прямо перед тем, как ответить конечному пользователю). Затем код готов к выполнению через места AWS по всему миру, когда получен запрос на получение контента для , и масштабируется с объемом запросов CloudFront по всему миру. Подробнее читайте в нашей документации.

USECASE, сводя к минимуму задержки для глобально распределенных пользователей

Q: Когда я должен использовать Lambda @ Краю? Lambda @ Edge оптимизирован для задержек чувствительных вариантов использования, когда ваши конечные пользователи распространяются по всему миру. В идеале, вся информация, необходимая для принятия решения, доступна на границе CloudFront, в рамках функции и запроса. Это означает, что в случаях, когда вы хотите принять решение о том, как использовать контент на основе характеристик пользователя (например, местоположение, клиентское устройство и т. Д.), Теперь можно выполнять и обслуживать прямо с края в Node.js- 6.10 без необходимости перенаправления на централизованный сервер.

2

AWS недавно объявила о поддержке региональных конечных точек API, с помощью которых вы можете достичь этого.

Ниже приводится AWS блог, который объясняет, как достичь этого:

Building a Multi-region Serverless Application with Amazon API Gateway and AWS Lambda

Выдержка из блога:

API-интерфейс типа конечных точек по умолчанию в API шлюза края оптимизированной API , что позволяет клиентам получать доступ к API через дистрибутив CloudFront от Amazon . Это обычно улучшает время соединения для географически разнообразных клиентов. По умолчанию пользовательское доменное имя глобально уникально, и конечная точка API с оптимизацией края будет ссылаться на функцию Lambda в одном регионе в случае интеграции Lambda. Вы не можете использовать этот тип конечной точки с активным активным устройством Route 53 и откатом.

Новая региональная конечная точка API в шлюзе API перемещает конечную точку API в регион, а пользовательское доменное имя является уникальным для каждого региона. Это позволяет запускать полную копию API в каждом регионе, а затем использовать Маршрут 53 для использования активной активной настройки и восстановления после сбоя.

Смежные вопросы