Проектирование API на AWS

Разработка приложений на AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

Что такое API

 

  • Amazon API Gateway: управляемый сервис для создания API.
  • Проектируйте, развёртывайте, управляйте и защищайте свои API.
Разработка приложений на AWS

Возможности Amazon API Gateway

 

Возможности API

  • Поддержка различных типов API.
Разработка приложений на AWS

Возможности Amazon API Gateway

 

Возможности API

  • Поддержка различных типов API.
  • Интеграция с серверными службами.
Разработка приложений на AWS

Возможности Amazon API Gateway

 

Возможности API Gateway

  • Поддержка различных типов API.
  • Интеграция с серверными службами.
  • Защита доступа к API.
Разработка приложений на AWS

Возможности Amazon API Gateway

 

Возможности API Gateway

  • Поддержка различных типов API.
  • Интеграция с серверными службами.
  • Защита доступа к API.
  • Ограничение запросов для защиты серверной части.
Разработка приложений на AWS

Возможности Amazon API Gateway

 

Возможности API Gateway

  • Поддержка различных типов API.
  • Интеграция с серверными службами.
  • Защита доступа к API.
  • Ограничение запросов для защиты серверной части.
  • Преобразование запросов и ответных данных.
Разработка приложений на AWS

Возможности Amazon API Gateway

 

Возможности API Gateway

  • Поддержка различных типов API.
  • Интеграция с серверными службами.
  • Защита доступа к API.
  • Ограничение запросов для защиты серверной части.
  • Преобразование запросов и ответных данных.
  • Публикация API для потребителей.
Разработка приложений на AWS

Возможности Amazon API Gateway

 

Возможности API Gateway

  • Поддержка различных типов API.
  • Интеграция с серверными службами.
  • Защита доступа к API.
  • Ограничение запросов для защиты серверной части.
  • Преобразование запросов и ответных данных.
  • Публикация API для потребителей.
  • Управление жизненным циклом API: версионирование, развёртывание, псевдонимы.
Разработка приложений на AWS

Типы API

  • API Gateway поддерживает три типа API:
    • REST APIs
    • HTTP APIs
    • WebSocket APIs

 

Типы API

Разработка приложений на AWS

Эндпоинты API Gateway

  • Эндпоинты определяют, как клиенты обращаются к API.
  • Edge-optimized: CloudFront под управлением AWS для минимальной задержки.
  • Regional: развёртывается в конкретном регионе AWS.
  • Private: доступен только через AWS PrivateLink.
  • Приватные эндпоинты не выходят в публичный интернет.

 

Эндпоинты

Разработка приложений на AWS

REST APIs

  • Наиболее функциональный тип API Gateway.
  • Основан на синхронной модели запрос/ответ.

 

REST APIs

Разработка приложений на AWS

Сценарии использования REST API

 

Сценарии использования REST API

  • Корпоративные API с полным управлением жизненным циклом.
  • API с расширенными требованиями к безопасности.
  • Экосистемы сторонних разработчиков с ключами API и планами использования.
  • Прямая интеграция с сервисами AWS без Lambda.
Разработка приложений на AWS

Поддержка REST API в API Gateway

 

Поддержка REST API

  • Валидация запросов.
  • Ключи API.
  • Планы использования и ограничение запросов.
  • Кэширование ответов с настраиваемым TTL.
  • Преобразование запросов/ответов через VTL-шаблоны.
  • Аутентификация IAM (Signature V4).
  • Lambda-авторизаторы, пулы пользователей Cognito.
Разработка приложений на AWS

Поддержка REST API в API Gateway

 

 

Поддержка REST API

  • Три поддерживаемых типа эндпоинтов:
    • Edge-optimized
    • Regional
    • Private
  • Защита от веб-атак с помощью AWS WAF.
  • Канареечные развёртывания.
  • Наблюдаемость через AWS X-Ray и журналы CloudWatch.
Разработка приложений на AWS

Компромиссы REST APIs

  • Дороже, чем HTTP APIs.
  • Несколько выше задержка.

 

Компромиссы REST

Разработка приложений на AWS

HTTP APIs

  • Оптимизированы по производительности и стоимости в ущерб функциональности:
    • Производительность
    • Стоимость

 

HTTP APIs

Разработка приложений на AWS

Сценарии использования HTTP API

  • Бессерверные рабочие нагрузки и API на основе Lambda.
  • Микросервисы и лёгкие прокси-API.
  • Приложения с высокими требованиями к задержке.
  • API с аутентификацией OAuth 2.0 / OIDC.

 

Сценарии использования HTTP APIs

Разработка приложений на AWS

Поддержка HTTP API в API Gateway

 

Возможности HTTP API

  • Прокси-интеграции и авторизаторы Lambda.
  • Встроенная авторизация JWT/OIDC (Cognito, Auth0, Okta).
  • Настройка CORS на уровне API.
  • Интеграция с приватным VPC через VPC Link.
  • Базовое сопоставление параметров заголовков, строк запроса и путей.
Разработка приложений на AWS

Компромиссы HTTP API

 

Ограничения HTTP API

  • HTTP APIs НЕ поддерживают:

    • Ключи API
    • Планы использования
    • Валидацию запросов
    • Кэширование ответов
    • Трассировку с AWS X-Ray
    • Преобразование данных через VTL

    • Поддерживаются только:

      • Эндпоинты Edge или приватные (только Regional)
Разработка приложений на AWS

WebSocket APIs

 

WebSocket APIs

  • Двусторонняя связь между клиентами и серверами.
  • Соединение остаётся открытым, в отличие от REST и HTTP APIs.
  • Серверы могут отправлять данные подключённым клиентам.
Разработка приложений на AWS

Сценарии использования WebSocket API

  • Чат-приложения.
  • Уведомления в реальном времени.
  • Дашборды реального времени.

 

Сценарии использования

Разработка приложений на AWS

Поддержка WebSocket API в API Gateway

  • Преобразование данных.
  • Валидация запросов.
  • Специальные встроенные маршруты:
    • $connect: клиент устанавливает соединение
    • $disconnect: клиент отключается
    • $default: подходящий маршрут не найден

 

Возможности WebSocket API

Разработка приложений на AWS

Кэширование API

  • Кэширование ответов снижает нагрузку на серверную часть.
  • Повышает производительность API.
  • Типичные сценарии:
    • Часто запрашиваемые данные
    • API с преобладанием операций чтения
    • Сокращение вызовов Lambda

 

Кэширование API

Разработка приложений на AWS

Кэширование API

 

Кэшированные ответы API

  • Кэшированные ответы истекают по истечении настраиваемого TTL.
  • Управление устаревшими данными:
    • Установка времени истечения кэша
    • Сброс кэша
Разработка приложений на AWS

Лучшие практики проектирования API: именование ресурсов

 

Проектирование API — существительные

  • Пути должны обозначать ресурсы, а не действия.
  • Используйте существительные, а не глаголы.
  • Хорошо:
    • GET /orders/123
  • Избегайте:
    • GET /getOrder/123
Разработка приложений на AWS

Лучшие практики проектирования API: версионирование

 

Версионирование API

  • Версионирование API обеспечивает безопасное развитие без нарушения работы клиентов.
  • Не нарушайте работу существующих клиентов.
  • Распространённые подходы:
    • Версия в URI: GET /v1/orders
    • Параметр запроса: GET /orders?version=1
    • HTTP-заголовок: Accept-Version: v1
Разработка приложений на AWS

Порталы для разработчиков API

  • Публикуйте и распространяйте REST API через веб-портал.
  • Предоставляйте документацию потребителям API.
  • Ключевые возможности:
    • Документация API (файлы Swagger)
    • Онбординг потребителей
    • Загрузка SDK
    • Регистрация ключей API и управление подписками

 

Портал API Gateway

Разработка приложений на AWS

Спецификации OpenAPI

  • OpenAPI (Swagger): стандартный способ описания REST API.
  • API Gateway поддерживает импорт и экспорт спецификаций OpenAPI.

 

Поддержка Swagger в API Gateway

Разработка приложений на AWS

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

Разработка приложений на AWS

Preparing Video For Download...