Стадии API Gateway и настройка среды выполнения

Автоматизация развёртывания на AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Три URL, один API

url

  • Один и тот же API оформления заказа нужен для dev, staging и prod
  • Каждая среда обращается к разным ресурсам
  • Жёстко заданные значения требуют пересборки под каждую среду
  • Переменные стадии решают это во время выполнения
Автоматизация развёртывания на AWS

Что такое стадия API Gateway

api

  • Стадия – это развёртывание API
  • У каждой стадии свой URL
  • Типичные стадии: dev, staging, prod
  • Одно определение API, много стадий
Автоматизация развёртывания на AWS

Почему стадии важны для развёртывания

stages

  • Тестируйте в dev, не затрагивая prod
  • Продвигайте один и тот же API по средам
  • Откатывайте стадию, не трогая остальные
  • Каждая стадия хранит свою историю развёртываний
Автоматизация развёртывания на AWS

Переменные стадии

  • Пары «ключ-значение» в рамках одной стадии
  • Обращение через ${stageVariables.varName}
  • Используйте их для настройки под среду
  • Изменение значений не требует правок кода

variables

Автоматизация развёртывания на AWS

Переменные стадии на практике

  • checkout-api -> стадия dev: lambdaAlias = dev
  • checkout-api -> стадия prod: lambdaAlias = prod
  • Интеграция вызывает payments:${stageVariables.lambdaAlias}
  • Один API обращается к двум разным алиасам Lambda

action

Автоматизация развёртывания на AWS

Собственные домены

  • URL по умолчанию неудобный: abc123.execute-api.us-east-1.amazonaws.com/dev
  • Собственный домен: api.example.com
    • Требует сертификат ACM для TLS
  • Маппинг базовых путей связывает пути со стадиями
    • api.example.com/v1 → стадия prod

custom

Автоматизация развёртывания на AWS

Как это связано между собой

all

  • Переменные стадии <-> алиасы Lambda из видео 2.3
  • Та же идея для версий определений задач ECS и имён таблиц DynamoDB
  • Утверждённые версии для каждой среды, без изменений кода
  • Глава 3 раскрывает это на других сервисах
Автоматизация развёртывания на AWS

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

Автоматизация развёртывания на AWS

Preparing Video For Download...