🇬🇧 English | 🇰🇿 Қазақша | 🇷🇺 Русский
Готовый к продакшену шаблон для размещения Telegram ботов на AWS с использованием Serverless архитектуры. Построен на AWS CDK (Python), разработан для специалистов, переходящих с традиционных VPS на Cloud Native.
В отличие от традиционных синхронных Lambda-функций, которые завершаются по таймауту через 15 минут, этот шаблон использует асинхронную, событийно-ориентированную архитектуру:
Telegram → API Gateway → Receiver Lambda → SQS Queue → Worker Lambda → DynamoDB + Telegram API
Ключевые Преимущества:
- ✅ Без Таймаутов: Worker Lambda обрабатывает сообщения асинхронно.
- ✅ Масштабируемость: Автоматически выдерживает пиковые нагрузки (тысячи пользователей).
- ✅ Отказоустойчивость: Dead Letter Queue (DLQ) перехватывает сбойные сообщения.
- ✅ Экономичность: Платите только за то, что используете (скорее всего, БЕСПЛАТНО для большинства ботов).
Традиционный VPS стоит $5-10/месяц независимо от трафика. С Serverless вы платите только за запросы. Для большинства пет-проектов и стартапов ваш счет AWS составит $0.00 благодаря AWS Free Tier.
Хотите увидеть, как это выглядит в продакшене?
Посмотрите репозиторий Zerde Bot. Это open-source анти-спам бот, полностью созданный на этом шаблоне и обслуживающий IT-сообщество из 900+ участников.
Статус: Работает 24/7 на AWS Free Tier (за $0).
| Ресурс | Лимит Free Tier (Ежемесячно) | Примерная Емкость Бота |
|---|---|---|
| AWS Lambda | 400,000 ГБ-секунд | ~3,000,000 сообщений |
| API Gateway | 300 млн запросов (1-й год) | Безлимитно для ботов |
| DynamoDB | 25 ГБ Хранилища | Миллионы записей |
| SQS | 1 Миллион Запросов | ~500,000 сообщений |
Вердикт: Для большинства стартапов ваш счет AWS будет $0.00.
- AWS CLI, настроенный с вашим аккаунтом.
- Docker (необходим для сборки CDK).
- uv (современный менеджер пакетов Python).
# Клонировать репозиторий
git clone https://github.com/Bayashat/serverless-tg-bot-starter.git
cd serverless-tg-bot-starter
# Установить зависимости
uv sync# Создать .env и сгенерировать токены
echo "TELEGRAM_BOT_TOKEN=ваш_токен" > .env
echo "TELEGRAM_WEBHOOK_SECRET_TOKEN=$(openssl rand -hex 32)" >> .env# Переходим в папку инфраструктуры
cd infra
# Подготовка CDK (нужно только один раз)
uv run cdk bootstrap
# Развертывание в среду Dev
uv run cdk deploy -c env=devСкопируйте WebhookApiUrl из вывода терминала и зарегистрируйте его:
# Замените YOUR_API_URL на ссылку из вывода и используйте TELEGRAM_WEBHOOK_SECRET_TOKEN
curl -X POST "[https://api.telegram.org/bot](https://api.telegram.org/bot)<YOUR_BOT_TOKEN>/setWebhook" \
-H "Content-Type: application/json" \
-d '{"url": "YOUR_API_URL/webhook", "secret_token": "YOUR_SECRET_TOKEN"}'Это не просто шаблон, это полноценная инженерная среда.
Мы используем pre-commit для обеспечения единого стиля кода (Black, Flake8).
# Установить git hooks
uv run pre-commit install
# (Опционально) Запустить вручную
uv run pre-commit run --all-filesПроект включает автоматизированный пайплайн (.github/workflows/deploy.yml), который деплоит в dev при пуше и в prod при ручном запуске.
Мы используем AWS OIDC (OpenID Connect) для безопасных деплоев без паролей.
Запустите скрипт настройки:
# Сделать скрипт исполняемым
chmod +x scripts/setup_oidc.sh
# Использование: ./scripts/setup_oidc.sh <github_user>/<repo_name>
./scripts/setup_oidc.sh yourname/serverless-tg-bot-starterДобавьте секреты в GitHub: Скопируйте AWS_ROLE_ARN из вывода скрипта и добавьте его в секреты репозитория вместе с токенами бота.
- 📖 Руководство Разработчика: Как писать хендлеры, использовать Context и добавлять фичи.
- 🚀 Руководство по Деплою: Настройка CI/CD, OIDC и мониторинг.
Вклад приветствуется! Пожалуйста, запустите pre-commit перед отправкой Pull Request.
MIT License — используйте этот шаблон для своих проектов!
Сделано с ❤️ для разработчиков из Центральной Азии, переходящих на Serverless
