Предположим, мне нужен шлюз 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-шлюз?
Если это неправильный способ сделать это, можете ли вы указать мне в правильном направлении?