Проєктування 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 API
    • HTTP API
    • WebSocket API

 

Типи API

Розроблення застосунків на AWS

Кінцеві точки API Gateway

  • Кінцеві точки керують тим, як клієнти звертаються до вашого API.
  • Edge-optimized: CloudFront від AWS для глобальної низької затримки.
  • Regional: розгортається в певному регіоні AWS.
  • Private: доступ лише через AWS PrivateLink.
  • Приватні кінцеві точки не виходять в публічний інтернет.

 

Кінцеві точки

Розроблення застосунків на AWS

REST API

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

 

REST API

Розроблення застосунків на 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.
  • Розгортання типу canary.
  • Спостережуваність через AWS X-Ray і журналювання CloudWatch.
Розроблення застосунків на AWS

Компроміси REST API

  • Дорожчі за HTTP API.
  • Трохи вища затримка.

 

Компроміси REST

Розроблення застосунків на AWS

HTTP API

  • Оптимізовані за продуктивністю та вартістю, а не за кількістю функцій:
    • Продуктивність
    • Вартість

 

HTTP API

Розроблення застосунків на AWS

Випадки використання HTTP API

  • Безсерверні навантаження та API на базі Lambda.
  • Мікросервіси та легкі проксі‑API.
  • Додатки, чутливі до затримок.
  • API з автентифікацією OAuth 2.0 / OIDC.

 

Використання HTTP API

Розроблення застосунків на AWS

Підтримка HTTP API в API Gateway

 

Можливості HTTP API

  • Інтеграції та авторизатори Lambda proxy.
  • Рідна авторизація JWT/OIDC (Cognito, Auth0, Okta).
  • Вбудована конфігурація CORS на рівні API.
  • Приватні інтеграції VPC через VPC Link.
  • Базове зіставлення параметрів для заголовків, рядків запиту та шляхів.
Розроблення застосунків на AWS

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

 

Обмеження HTTP API

  • HTTP API НЕ підтримують:

    • ключі API
    • плани використання
    • валідацію запитів
    • кешування відповідей
    • трасування з AWS X-Ray
    • трансформацію корисного навантаження VTL

    • Підтримують лише:

      • Edge або приватні кінцеві точки (лише регіональні)
Розроблення застосунків на AWS

WebSocket API

 

WebSocket API

  • Двосторонній обмін між клієнтами та серверами.
  • З'єднання залишається відкритим, на відміну від REST і HTTP API.
  • Сервери можуть пушити дані підключеним клієнтам.
Розроблення застосунків на 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

  • Версонуйте 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...