Гид по технологиям

Управление версиями AWS Lambda

• 6 min read • DevOps • Обновлено 21 Nov 2025
Управление версиями AWS Lambda
Управление версиями AWS Lambda

lambda logo

Что вы узнаете

  • Как действует $LATEST и почему его не рекомендуется использовать в продакшене
  • Как публиковать версии и создавать алиасы в консоли и через CLI
  • Как плавно переключать трафик с помощью алиасов и CodeDeploy
  • Как SAM и CI/CD упрощают управление версиями
  • Рольовые чеклисты, критерии приёмки и план отката

Ключевые понятия

  • $LATEST — автоматическая версия, отражающая последние изменения функции.
  • Версия (Version) — неизменяемая снимок функции, публикуемый вручную или CI/CD.
  • Алиас (Alias) — ярлык, указывающий на конкретную версию и используемый другими сервисами.
  • SAM — Serverless Application Model, расширение CloudFormation для serverless-приложений.

1-строчная глоссарий:

  • Алиас: удобно менять «целевую» версию без обновления зависимых сервисов.

Почему $LATEST не для продакшена

$LATEST всегда указывает на текущую, редактируемую редакцию функции. Это удобно для разработки и отладки, но несёт риски для рабочей нагрузки:

  • Любое изменение немедленно влияет на весь продакшен, если сервисы ссылаются на $LATEST.
  • Нельзя откатиться к предыдущей стабильной версии через консоль, нужно вручную публиковать и переназначать.
  • Интеграция с CodeDeploy для пошаговых релизов не поддерживается при прямом использовании $LATEST.

Рекомендация: используйте $LATEST только для разработки. Для релизов публикуйте версию и направляйте продакшн-трафик через алиас с названием типа production.

Публикация новой версии и смена трафика

Работа с версиями в консоли:

  1. Откройте функцию в Lambda Management Console.
  2. Переключитесь на версию $LATEST.
  3. В меню Actions выберите Publish new version.
  4. Присвойте описание и подтвердите публикацию.

Lambda versions menu

lambda new version

После публикации вы получите целое число версии (1, 2, 3 …). Чтобы связать эту версию с API Gateway или другими сервисами, используйте алиас:

  1. В Actions выберите Create alias.
  2. Задайте имя алиаса, например production.
  3. Укажите номер версии, на который он должен указывать.

lambda alias

Пример AWS CLI (синтаксис необходимо проверить под вашу версию AWS CLI):

# Опубликовать новую версию
aws lambda publish-version --function-name my-function --description "v1.2.0"

# Создать алиас, указывающий на версию 3
aws lambda create-alias --function-name my-function --name production --function-version 3 --description "Production alias"

# Обновить алиас, чтобы он указывал на версию 4
aws lambda update-alias --function-name my-function --name production --function-version 4

Если вы хотите плавно распределять трафик без CodeDeploy, можно использовать routing config алиаса (см. документацию AWS для точного формата JSON). Однако для самых безопасных канареечных релизов рекомендуется CodeDeploy.

Алиасы и плавный релиз

Алиасы — это основной инструмент для безопасной смены версии везде, где функция используется. Плюсы:

  • Меняете одну сущность (алиас) — и все потребители видят новую версию.
  • Можно переключать трафик моментально или постепенно.
  • Алиасы интегрируются с IAM и CloudWatch как отдельные идентификаторы.

Когда нужен постепенный выпуск:

  • Новая версия имеет риск регресса или потенциально тяжёлые изменения внешнего API.
  • Требуется валидация в реальном трафике с минимальным blast radius.

Плавное распределение через CodeDeploy позволяет задать правила: например, 10% трафика на новую версию в течение N минут, затем 25%, и т. д., с автоматическим откатом при ошибках.

Mermaid-диаграмма решения — использовать алиас или прямую версию:

flowchart TD
  A[Нужно ли откатывать без обновления сервисов?] -->|Да| B[Использовать алиас]
  A -->|Нет| C[Может хватит $LATEST для разработки]
  B --> D{Нужно ли плавное развертывание?}
  D -->|Да| E[CodeDeploy]
  D -->|Нет| F[Просто обновить алиас]

Плавный релиз через CodeDeploy

CodeDeploy поддерживает стратегии развертывания для Lambda, включая канареечные и поэтапные релизы. Общая идея:

  • Создаётся deployment group, привязанная к алиасу.
  • В конфигурации указываются шаги распределения трафика и условия отката (например, ошибки > X% за Y минут).
  • При срабатывании условий отката CodeDeploy автоматически возвращает алиас на предыдущую версию.

Важно: настройте метрики (ошибки, latency, throttles) в CloudWatch и Alarm, чтобы CodeDeploy мог корректно реагировать.

SAM, CloudFormation и автоматические версии

Если вы управляете функциями в большом масштабе, публиковать версии вручную неудобно. SAM и CloudFormation автоматизируют этот процесс:

  • При деплое через SAM каждый обновлённый Lambda-ресурс создаёт новую версию (и обновляет $LATEST).
  • CloudFormation рассматривает это как обновление стека, заменяет функцию и сохраняет новую версию.
  • Комбинация Git + CodePipeline + CodeBuild позволяет автоматизировать сборку (транспиляцию/компиляцию), тестирование и деплой.

Рекомендации по CI/CD:

  • Тегируйте релизы в Git и используйте ветки релизов.
  • В CodePipeline добавьте этапы build -> test -> deploy.
  • Прежде чем переключать алиас на новую версию, запускать интеграционные тесты и smoke tests.

Рольовые чеклисты

Разработчик:

  • Тесты: unit и интеграционные тесты локально и в CI.
  • Использует $LATEST для разработки и отдельный алиас dev.
  • В коммите указывает changelog и ссылку на тикет.

SRE/операции:

  • Настроить мониторинг CloudWatch: ошибки, latency, throttles, cold starts.
  • Настроить CodeDeploy с четкими правилами отката.
  • Периодически проверять IAM-права для функций и алиасов.

Релиз-менеджер:

  • Проверяет описание версии и результаты smoke тестов.
  • Запускает деплой в staging и затем production по расписанию.
  • Контролирует откаты и post-deploy проверку.

Критерии приёмки и тесты

Критерии приёмки для версии перед переключением алиаса:

  • Unit тесты: 100% прохождение в CI.
  • Интеграционные тесты с зависимыми сервисами: green.
  • Нагрузочные и latency тесты: не ухудшаются по сравнению с текущей версией более чем на допустимый порог.
  • Логи и метрики: ошибок не больше заранее определённого лимита.

Пример набора smoke-тестов:

  • Проверить успешный ответ на ключевой endpoint.
  • Проверить корректность формата ответа.
  • Проверить обработку ошибок на граничных данных.

План отката и инцидент-руководство

  1. Обнаружение: мониторинг обнаружил рост ошибок или падение SLA.
  2. Быстрый анализ: подтвердите аномалию по CloudWatch Logs/Tracing.
  3. Откат через алиас: обновить алиас на предыдущую стабильную версию.
  4. Если используется CodeDeploy — инициировать автоматический/ручной откат через него.
  5. Постмортем: собрать логи, воспроизвести ошибку в staging, обновить тесты.

Команды для экстренного отката через CLI:

# Узнать версии и алиасы
aws lambda list-versions-by-function --function-name my-function
aws lambda list-aliases --function-name my-function

# Откат алиаса на версию 3
aws lambda update-alias --function-name my-function --name production --function-version 3

Лучшие практики и стратегия версий

  • Публикуйте новую версию на каждый релиз — это даёт воспроизводимость и откаты.
  • Алиасы называйте однозначно: production, staging, canary, dev.
  • Храните исходный код и инфраструктуру в Git; тегируйте релизы.
  • Автоматизируйте сборки и тестирование в CodePipeline/CodeBuild.
  • Используйте CodeDeploy для плавных релизов и автоматического отката по метрикам.
  • Документируйте зависимости и изменения в changelog при публикации версии.

Безопасность и соответствие требованиям приватности

  • Управляйте правами через IAM: разные роли для деплоя, просмотра логов, вызова функций.
  • Логи и трассировки могут содержать персональные данные — применяйте маскирование и политику хранения логов в соответствии с GDPR/локальными требованиями.
  • Ограничивайте сторонние зависимости и обновляйте runtime для устранения уязвимостей.

Миграционные советы для регионов и локального окружения

  • Убедитесь, что используемые сервисы (например, S3, API Gateway) доступны в нужном регионе.
  • При переносе следите за регионами хранения логов и временем жизни секретов.
  • Для локального тестирования используйте SAM CLI и локальные эмуляторы.

Итог

Управление версиями Lambda — ключ к безопасным и предсказуемым релизам. Шаблон действий:

  1. Разработка в $LATEST и dev-алиасе.
  2. Публикация версии для релиза.
  3. Назначение production-алиаса на новую версию с постепенным rollout через CodeDeploy.
  4. Мониторинг, тестирование и быстрый откат при проблеме.

Важно: автоматизируйте процесс через SAM + CodePipeline и поддерживайте четкие чеклисты для ролей.

Краткое резюме:

  • Никогда не прямо используйте $LATEST в продакшене.
  • Публикуйте версии, используйте алиасы и CodeDeploy для безопасных релизов.
  • Автоматизируйте с SAM и CI/CD для масштабируемости и повторяемости.

Примечание: примеры команд и форматы JSON зависят от версии AWS CLI и вашей конфигурации. Сверяйтесь с официальной документацией при исполнении в продуктивной среде.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро