Розробка API

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

Ricardo Sueiras

Principal Technologist

Інтеграції API Gateway

 

Інтеграції API Gateway

  • Кілька варіантів інтеграції бекенду
  • HTTP: будь-яка публічно доступна кінцева точка
  • API сервісів AWS, як-от DynamoDB або SNS
  • Функції Lambda
  • Приватні ресурси через VPC links
  • Мок-відповіді без реального бекенду
Розроблення застосунків на AWS

Типи інтеграції: проксі

 

Типи інтеграції API

  • Тип інтеграції визначає рівень контролю API Gateway
  • Типи проксі: AWS_PROXY та HTTP_PROXY
  • Увесь HTTP-запит надсилається прямо на бекенд
  • API Gateway працює як прозорий пасстуру
  • Бекенд формує відповідь
Розроблення застосунків на AWS

Типи інтеграції: не проксі

  • Непроксі типи: AWS і HTTP
  • Ви налаштовуєте перетворення запитів і відповідей
  • Керується мапінг-шаблонами
  • Шаблони пишуться мовою Velocity Template Language (VTL)

 

Типи інтеграції API

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

Валідація запитів

 

валідація запитів

  • Перевіряйте запити до того, як вони дійдуть до бекенду
  • Виявляє відсутні обов'язкові поля
  • Виявляє некоректний формат JSON
  • Виявляє неправильні типи параметрів
  • Зазвичай повертає 400 Bad Request
Розроблення застосунків на AWS

Валідація запитів

 

валідація запитів

  • Валідація може охоплювати:
    • Заголовки
    • Параметри рядка запиту
    • Тіло запиту
    • Схему JSON
Розроблення застосунків на AWS

Валідація запитів

 

валідація запитів

  • Переваги валідації:
    • Менше невалідних запитів до бекенду
    • Менші витрати на виконання Lambda
    • Вища надійність API
Розроблення застосунків на AWS

Перетворення

  • Переформатовуйте запити й відповіді без змін у коді бекенду
    • Змініть структуру корисного навантаження
    • Перейменовуйте поля
    • Трансформуйте заголовки
    • Конвертуйте формати даних
    • Приховуйте деталі реалізації
  • Працює на мапінг-шаблонах VTL

 

Перетворення API

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

Обробка помилок

 

Помилки API

  • Дві категорії помилок
    • Помилки шлюзу: створює API Gateway
    • Помилки інтеграції: збої бекенду
  • Поширені помилки шлюзу:
    • 400 Bad Request: невдала валідація запиту
    • 429 Too Many Requests: перевищено ліміт тротлінгу
Розроблення застосунків на AWS

Обробка помилок

 

Помилки API

  • Поширені помилки інтеграції:
    • 502 Bad Gateway: некоректна або зламанa відповідь
    • 503 Service Unavailable: бекенд недоступний або перевантажений
    • 504 Gateway Timeout: перевищено тайм-аут 29 секунд
    • Регіональні та Private REST API можуть перевищувати 29 секунд
Розроблення застосунків на AWS

Логування

  • Журнали виконання та метрики CloudWatch — ключові інструменти діагностики
  • API Gateway інтегрується з CloudWatch для:
    • Журналів
    • Метрик
    • Трейсингу виконання

 

 

Спостережуваність API

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

Логування

  • Логи CloudWatch допомагають з діагностикою:
    • Невдалих інтеграцій
    • Помилок перетворення
    • Збоїв авторизації
    • Проблем виконання Lambda

 

 

Спостережуваність API

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

Stages: керування API між середовищами

 

Середовища

  • Одне визначення API обслуговує кілька середовищ
  • Stages — це спосіб керування цими середовищами в API Gateway
Розроблення застосунків на AWS

Stages: керування API між середовищами

 

Середовища

  • Одне визначення API обслуговує кілька середовищ
  • Stages — це спосіб керування цими середовищами в API Gateway
  • Stage — це іменоване посилання
  • Вказує на знімок розгортання конфігурації вашого API
Розроблення застосунків на AWS

Stages: керування API між середовищами

 

Середовища

  • Одне визначення API обслуговує кілька середовищ
  • Stages — це спосіб керування цими середовищами в API Gateway
  • Stage — це іменоване посилання
  • Вказує на знімок розгортання конфігурації вашого API
  • Типові назви stage:
    • Dev
    • Test
    • QA і Prod
Розроблення застосунків на AWS

Stages: керування API між середовищами

 

Середовища

  • Одне визначення API обслуговує кілька середовищ
  • Stages — це спосіб керування цими середовищами в API Gateway
  • Stage — це іменоване посилання
  • Вказує на знімок розгортання конфігурації вашого API
  • Типові назви stage: Dev, Test, QA, Prod
  • Invoke URL відрізняється для кожного stage
Розроблення застосунків на AWS

Stages: керування API між середовищами

 

Середовища

  • Одне визначення API обслуговує кілька середовищ
  • Stages — це спосіб керування цими середовищами в API Gateway
  • Stage — це іменоване посилання
  • Вказує на знімок розгортання конфігурації вашого API
  • Типові назви stage: Dev, Test, QA, Prod
  • Invoke URL відрізняється для кожного stage
  • Кілька stage можуть вказувати на одне розгортання для миттєвого відкату
Розроблення застосунків на AWS

Stages: керування API між середовищами

 

Середовища

  • Зміни стають активними лише після розгортання на stage
Розроблення застосунків на AWS

Можливості stages

  • Кожен stage налаштовується окремо
  • Конфігурація включає змінні stage
  • Змінні stage — це пари ключ-значення
  • Маршрутизуйте одне розгортання на різні бекенди
  • Для зміни середовища повторне розгортання не потрібне

 

stage

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

Можливості stages

  • Канаркові розгортання
    • Лише для REST API
    • Спрямовуйте відсоток трафіку на нове розгортання
    • Підвищуйте до повного релізу
    • Видаліть «канарку» для відкату

 

stage

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

Можливості stages

  • Тротлінг
    • Встановлюється на рівні stage
    • Застосовується до всіх методів, із перевизначеннями для окремих методів

 

stage

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

Можливості stages

  • Тротлінг
    • Встановлюється на рівні stage
    • Застосовується до всіх методів, із перевизначеннями для окремих методів
  • Кешування
    • Лише для REST API
    • Зберігає відповіді бекенду на рівні stage
    • Клієнти можуть обійти через Cache-Control
    • TTL від 0 до 3600 секунд, типово 300

 

stage

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

Можливості stages

  • Логування має два режими
    • Access logs
    • Формуються зі змінних $context, надсилаються в групу логів CloudWatch
    • Execution logs
    • Містять повні деталі запиту та відповіді

 

stage

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

Давайте потренуємось!

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

Preparing Video For Download...