Logo Craft Homelab Docs Контакты Telegram
LocalStack: Как запустить облако AWS на своем ноутбуке
Mon Nov 10 2025

Разработка в облаке без облака: Почему ваш следующий проект начнется с LocalStack

Каждый, кто хоть раз настраивал CI/CD для облачных решений, знает эту «боль»: создание временных S3-бакетов, ожидание деплоя CloudFormation-стеков и, конечно, неприятные сюрпризы в счетах от AWS в конце месяца. Традиционный цикл «написал код — задеплоил в облако — проверил» слишком медленный и дорогой.

LocalStack решает эту проблему радикально. Он переносит облачную инфраструктуру прямо к вам в Docker. Это эмулятор облачных сервисов, который позволяет запускать Lambda-функции, управлять очередями SQS и хранить файлы в S3, не выходя в интернет. Вы получаете идентичное API, мгновенный фидбек и нулевые затраты на инфраструктуру во время разработки.

Что под капотом?

LocalStack — это не просто набор моков. Это сложный фреймворк, написанный на Python, который объединяет десятки эмуляторов сервисов под единым прокси-интерфейсом.

Ключевые особенности архитектуры:

  • Edge Proxy (Port 4566): Все запросы к “AWS” в LocalStack идут через один порт. Прокси-сервер анализирует заголовки (например, Authorization или Host) и перенаправляет трафик на нужный бэкенд-сервис.
  • Агностичность к инструментам: Поскольку LocalStack реализует стандартные протоколы AWS, вы можете использовать привычные инструменты: aws-cli, Terraform, CDK или SDK для любых языков программирования.
  • Контейнеризация: Весь LocalStack упакован в один Docker-образ. Это гарантирует, что окружение на машине разработчика будет идентично окружению в Jenkins или GitHub Actions.

Выбор Python обусловлен огромным количеством готовых библиотек для мокинга AWS (таких как Moto) и гибкостью языка для динамической маршрутизации запросов.

Быстрый старт

Для начала работы вам понадобится установленный Docker. Самый удобный способ управления — через CLI.

  1. Установка CLI:
pip install localstack
  1. Запуск платформы:
localstack start -d

Флаг -d запускает контейнер в фоновом режиме. После запуска вы увидите стильный ASCII-арт и статус сервисов.

  1. Проверка статуса:
localstack status services
  1. Установка awslocal:

Чтобы не прописывать каждый раз --endpoint-url=http://localhost:4566, используйте удобную обертку:

pip install awscli-local

Пример: SQS и Lambda

Представьте сценарий: ваша система должна отправлять уведомление в очередь SQS, которое затем обрабатывается Lambda-функцией. В “реальном” AWS это заняло бы пару минут только на деплой.

С LocalStack это делается одной командой:

# Создаем очередь
awslocal sqs create-queue --queue-name notification-queue

# Проверяем список очередей
awslocal sqs list-queues

Пример на Python (boto3): Для работы с LocalStack в коде достаточно переопределить endpoint_url:

import boto3

# Подключаемся к локальному S3
s3 = boto3.resource('s3', endpoint_url="http://localhost:4566")

# Создаем бакет
s3.create_bucket(Bucket="my-test-bucket")

print("Бакет успешно создан локально!")

Этот код будет работать в облаке без изменений, если вы просто уберете параметр endpoint_url.

Заключение

LocalStack — это стандарт де-факто для тех, кто ценит скорость разработки и надежность тестов. Проект активно развивается: версия 4.x принесла еще большую стабильность и поддержку новых API (например, расширенную работу с IAM и AppSync).

Попробуйте запустить свои тесты в LocalStack сегодня, и вы удивитесь, насколько быстрее станет ваш workflow.