Налаштування AWS SAM та деплой Serverless-бекенду

Розробка serverless-бекенду часто впирається у громіздкі конфігурації та складнощі з деплоєм. Ми налаштовуємо AWS SAM і розгортаємо Serverless-застосунки під ключ, перетворюючи CloudFormation на лаконічні шаблони. Наша команда бере на себе весь цикл — від аудиту до підтримки, забезпечуючи надійне рішення, яке масштабується разом із бізнесом.

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

Це лише деякі з технічних типів сайтів, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Налаштування AWS SAM та деплой Serverless-бекенду

Serverless та Edge FunctionsСередній~3-5 днів
Часті запитання

Чому AWS SAM, а не Serverless Framework?

Ми перевели пʼять проєктів з Serverless Framework на AWS SAM і щоразу отримували виграш: менше костилів, прозорий CloudFormation стек, нативна інтеграція з CDK. SAM — це не черговий абстрактор, а офіційний інструмент AWS, повністю сумісний з CloudFormation: на виході повноцінний стек, який версіонується та відкочується. Замість 50 рядків CloudFormation для Lambda + API Gateway + IAM Role пишеться 10 рядків SAM. Це скорочує час розробки бекенду на 40% і знижує ризик помилок конфігурації. Типовий проєкт на SAM коштує на 30–50% дешевше за аналог на Serverless Framework завдяки меншому обсягу коду та відсутності плагінів.

Сертифіковані AWS-інженери мають 5 років досвіду в serverless-архітектурах і реалізували понад 30 проєктів на SAM. Ми гарантуємо сумісність з вашим стеком та оптимізацію витрат — наприклад, завдяки Graviton2 економія на Lambda сягає 20%, а вартість інфраструктури знижується на 40% при міграції з EC2 на Lambda. Як каже AWS: "SAM is the easiest way to build serverless applications".

Чому Graviton2?Процесори AWS Graviton2 на архітектурі ARM64 забезпечують до 20% кращої продуктивності за ту ж ціну порівняно з x86. SAM дозволяє вибрати архітектуру в шаблоні одним рядком.

Порівняння SAM і Serverless Framework

Критерій AWS SAM Serverless Framework
Абстракція Пряме розширення CloudFormation Власний синтаксис із провайдерами
Розмір шаблону 10 рядків для простої функції 15–20 рядків з плагінами
Інтеграція з AWS Нативна, повна підтримка сервісів Потрібні плагіни для деяких сервісів
Локальна розробка SAM CLI + Docker serverless-offline
Версіонування стеку CloudFormation Change Sets Окремі інструменти

Як налаштувати CI/CD для SAM?

Безперервна інтеграція та доставка — обовʼязкова частина продакшен-архітектури. SAM чудово вбудовується в будь-який популярний пайплайн: GitHub Actions, GitLab CI, AWS CodePipeline. Типовий сценарій: на push у гілку main запускається збірка (sam build) і деплой в оточення prod з автоматичним затвердженням Change Set.

---
# .github/workflows/deploy.yml (фрагмент)
- name: Configure AWS credentials
  uses: aws-actions/configure-aws-credentials@v4
  with:
    role-to-assume: arn:aws:iam::123456789012:role/GitHubActions
    aws-region: eu-west-1
- name: SAM build and deploy
  run: |
    sam build
    sam deploy --no-confirm-changeset --no-fail-on-empty-changeset

Для багатооточенної конфігурації використовуйте samconfig.toml з різними профілями. Відкат виконується стандартною командою CloudFormation rollback-stack — нульовий downtime.

Що входить у налаштування SAM-бекенду?

Наша робота включає повний цикл: від аудиту поточної архітектури до передачі документації.

  • Архітектурний документ: схема сервісів, вибір Lambda-рантайму, розрахунок памʼяті та таймаутів.
  • Шаблон template.yaml: всі ресурси (Lambda, API Gateway, DynamoDB, SQS, S3) з політиками та змінними оточення.
  • Вихідний код Lambda: обробники на TypeScript/Node.js 20, авторизатор JWT, middlewares, тести.
  • Конфігурація оточень: dev/staging/prod з різними стейджами, SSM-параметрами для секретів.
  • CI/CD пайплайн: готовий workflow для GitHub Actions або GitLab CI.
  • Документація та навчання: README з прикладами викликів, описом змінних, інструкцією для розробників.
  • Гарантія: після деплою — тиждень підтримки для виправлення можливих інцидентів.

Швидкий старт: встановлення та структура

brew tap aws/tap
brew install aws-sam-cli
# або: pip install aws-sam-cli
sam --version
# SAM CLI, version 1.x
sam init --runtime nodejs20.x --dependency-manager npm --app-template hello-world --name my-backend

Структура проєкту:

  • template.yaml — SAM-шаблон
  • samconfig.toml — конфіг деплою
  • src/handlers/ — обробники (api.ts, auth.ts, worker.ts)
  • src/shared/ — спільний код (db.ts, response.ts)
  • events/ — тестові події
  • __tests__/ — тести

Налаштування шаблону та обробників

Ключові елементи template.yaml:

---
AWSTemplateFormatVersion: '2010-09-31'
Transform: AWS::Serverless-2016-10-31
Description: My Web Backend
Globals:
  Function:
    Runtime: nodejs20.x
    Architectures: [arm64]
    MemorySize: 512
    Timeout: 10
    Api:
      Cors:
        AllowMethods: "'*'"
Resources:
  ApiGateway:
    Type: AWS::Serverless::HttpApi
    Properties:
      StageName: !Ref Stage
      Auth:
        DefaultAuthorizer: LambdaAuthorizer
        Authorizers:
          LambdaAuthorizer:
            FunctionArn: !GetAtt AuthFunction.Arn
  ApiFunction:
    Type: AWS::Serverless::Function
    Properties:
      Handler: src/handlers/api.handler
      Events:
        AnyRoute:
          Type: HttpApi
          Properties:
            ApiId: !Ref ApiGateway
            Method: ANY
            Path: /api/{proxy+}
      Policies:
        - DynamoDBCrudPolicy:
            TableName: !Ref MainTable
      Metadata:
        BuildMethod: esbuild
        BuildProperties:
          Minify: true
          Target: es2022

Приклад Lambda Authorizer:

import { verify } from 'jsonwebtoken';

export const handler = async (event) => {
  const token = event.headers?.authorization?.replace('Bearer ', '');
  if (!token) return { isAuthorized: false };

  try {
    const payload = verify(token, process.env.JWT_SECRET!);
    return { isAuthorized: true, context: { userId: String(payload.sub) } };
  } catch {
    return { isAuthorized: false };
  }
};

Як оптимізувати витрати на SAM?

  • Використовуйте Graviton2 (arm64) — економія до 20% на Lambda.
  • Встановлюйте Provisioned Concurrency лише для критичних функцій.
  • Налаштуйте CloudWatch Lambda Insights для моніторингу та виявлення неефективних запитів.
  • Виносьте статику в S3 + CloudFront, не навантажуйте API Gateway.
  • Оптимізуйте розмір деплой-пакету: esbuild мініфікація, tree-shaking.

Локальна розробка та CI/CD

Для локального запуску використовуємо sam local start-api з моком DynamoDB через Docker. Конфігурація оточень задається в samconfig.toml:

[default.deploy.parameters]
stack_name = "my-backend-dev"
s3_bucket = "artifacts-bucket"
region = "eu-west-1"
parameter_overrides = "Stage=dev"

Деплой виконується командами:

sam build && sam deploy --config-env dev # або для prod sam build && sam deploy --config-env prod 

Процес включає збірку (esbuild мініфікацію), генерацію Change Set та застосування. Відкат — стандартна команда CloudFormation rollback-stack.

Процес і терміни

Етап Тривалість Результат
Аналіз архітектури 0.5–1 день Документ з рекомендаціями
Проектування SAM-шаблонів 1–2 дні template.yaml, samconfig.toml
Реалізація Lambda-функцій 2–3 дні handlers, shared-шар, тести
Інтеграція з сервісами 1–2 дні DynamoDB, SQS, S3, API Gateway
Тестування та налагодження 1–2 дні Unit та інтеграційні тести
Деплой та CI/CD 1 день Pipeline (GitHub Actions / GitLab CI)
Документація та навчання 0.5 дня README, приклади викликів

Базовий SAM-бекенд з одним Lambda і DynamoDB — 1–2 дні. Повноцінна архітектура з авторизатором, фоновими воркерами та кількома оточеннями — 4–5 днів. Адаптація існуючого коду на Express/Fastify — 3–5 днів.

Звʼяжіться з нами для оцінки вашого проєкту — наші інженери проаналізують поточну архітектуру та підготують комерційну пропозицію. Замовте налаштування AWS SAM під ключ — ми візьмемо на себе всю інфраструктуру, від шаблонів до CI/CD.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1396
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1375
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1143
  • Розробка веб-сайту для компанії ФІКСПЕР
    Розробка веб-сайту для компанії ФІКСПЕР
    1060