Создание API с помощью Amazon API Gateway

Развёртывание приложений на AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Три клиента, один бэкенд

  • Веб, мобильный клиент и партнёр обращаются к одному бэкенду
  • Каждый использует немного другой формат
  • Единая точка входа проверяет и преобразует каждый запрос

 

Три типа клиентов подключаются через единый API Gateway, который маршрутизирует запросы к серверным службам

Развёртывание приложений на AWS

Что делает API Gateway

API Gateway как управляемая точка входа: веб- и мобильные клиенты обращаются через центральный шлюз с маршрутизацией, аутентификацией, ограничением запросов и трансформацией к Lambda, HTTP-эндпоинтам и сервисам AWS

  • Полностью управляемая точка входа для ваших API
  • Обрабатывает маршрутизацию, аутентификацию, ограничение запросов и трансформацию
  • Располагается между клиентами и бэкендом
  • Бэкенды: Lambda, HTTP-эндпоинты или сервисы AWS
Развёртывание приложений на AWS

Типы интеграции

  • Lambda proxy: передаёт весь запрос в Lambda
  • Lambda non-proxy: вы задаёте маппинг полей запроса и ответа
  • HTTP: перенаправляет запрос на HTTP-бэкенд
  • MOCK: возвращает ответ без обращения к бэкенду

Четыре типа интеграции API Gateway: Lambda proxy передаёт полный запрос, Lambda non-proxy использует шаблоны маппинга, HTTP перенаправляет на эндпоинт, MOCK возвращает статический ответ

Развёртывание приложений на AWS

Трансформация запросов и ответов

  • Шаблоны маппинга преобразуют полезные нагрузки с помощью VTL
  • Velocity Template Language трансформирует тело, заголовки и параметры
  • Маппинг запроса: формат клиента → формат бэкенда
  • Маппинг ответа: формат бэкенда → формат клиента

Схема маппинга VTL: полезная нагрузка клиента преобразуется шаблоном запроса перед отправкой на бэкенд, затем ответ бэкенда преобразуется шаблоном ответа перед возвратом клиенту

Развёртывание приложений на AWS

Валидация запросов

Режимы валидации запросов: проверка тела по JSON-схеме, проверка обязательных параметров запроса и заголовков или проверка обоих перед вызовом Lambda-бэкенда

  • Отклоняйте некорректные данные до их попадания на бэкенд
  • Обязательные параметры: заголовки, строки запроса, пути
  • Схемы моделей: проверяют структуру JSON-тела
  • Валидация тела, параметров или обоих сразу
Развёртывание приложений на AWS

Коды статусов и контракты ошибок

  • Переопределяйте коды статусов бэкенда для единого контракта
  • Замените код 502 от бэкенда на понятный клиенту код 503
  • Gateway responses: настройка тела сообщений об ошибках
  • Клиенты получают предсказуемые ошибки независимо от бэкенда

Полный жизненный цикл запроса в API Gateway: валидация отклоняет некорректные данные на входе, шаблон маппинга преобразует корректные данные для бэкенда, шаблон ответа форматирует вывод в единый клиентский контракт

Развёртывание приложений на AWS

Всё вместе

  • Запрос клиента → валидация → трансформация → бэкенд
  • Некорректные данные отклоняются на входе
  • Корректные данные преобразуются для бэкенда
  • Ответ бэкенда форматируется в клиентский контракт

Полный жизненный цикл запроса в API Gateway: валидация отклоняет некорректные данные на входе, шаблон маппинга преобразует корректные данные для бэкенда, шаблон ответа форматирует вывод в единый клиентский контракт

Развёртывание приложений на AWS

Давайте потренируемся!

Развёртывание приложений на AWS

Preparing Video For Download...