Етапи API Gateway та конфігурація під час виконання

Автоматизація розгортань в AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Три URL — один API

url

  • Тому самому checkout 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...