AWS SAM и CDK для serverless и IaC

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

Dunieski Otano

Amazon Web Services Solutions Architect

Файл YAML на 2 000 строк

yaml

  • Один Lambda + API Gateway разросся до 2 000 строк YAML
  • Каждая роль IAM, группа логов и разрешение прописаны вручную
  • Опечатка закрадывается в середине политики разрешений
  • SAM и CDK сжимают всё это до нескольких строк
Автоматизация развёртывания на AWS

AWS SAM вкратце

sam

  • SAM — это расширение CloudFormation для serverless
  • Компактные типы ресурсов: AWS::Serverless::Function, ::Api
  • SAM CLI собирает, упаковывает и разворачивает приложение
  • Шаблоны преобразуются в обычный CloudFormation
Автоматизация развёртывания на AWS

Рабочий процесс SAM

workflow

  • sam init: создать проект из шаблона
  • sam validate: проверить шаблон перед сборкой
  • sam build: скомпилировать и упаковать код
  • sam deploy: развернуть в стек CloudFormation
Автоматизация развёртывания на AWS

AWS CDK вкратце

  • Описывайте инфраструктуру на TypeScript, JavaScript, Python, Java, C#, Go
  • Компилируйте в CloudFormation командой cdk synth
  • Разворачивайте командой cdk deploy; пересборка при каждом изменении кода
  • Те же концепции стеков и ресурсов, что и в CloudFormation

cdk

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

Уровни конструкций CDK

  • L1: прямая обёртка ресурса CloudFormation
  • L2: готовые конструкции с разумными настройками по умолчанию
  • L3: паттерны, объединяющие несколько ресурсов
  • Чем выше уровень, тем меньше строк, но и меньше контроля

construct

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

Когда что использовать

  • Чистый CloudFormation: полный контроль, удобен для эксплуатации
  • SAM: чисто serverless-приложения, самый быстрый путь
  • CDK: сложная инфраструктура, команды с опытом программирования
  • Все три разворачиваются одинаково под капотом

each

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

Все три разворачиваются как CloudFormation

funnel

  • SAM преобразуется в CloudFormation
  • CDK компилируется в CloudFormation
  • Итоговый стек использует те же события, дрейф, наборы изменений
  • Откаты работают одинаково независимо от инструмента
Автоматизация развёртывания на AWS

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

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

Preparing Video For Download...