aiogram-yandex.cloud-serverless-example
aiogram-yandex.cloud-serverless-example copied to clipboard
Пример простого Telegram бота на Aiogram для Yandex.Cloud functions.
Aiogram Yandex.Cloud serverless example
Пример простого Telegram бота на Aiogram для Yandex.Cloud functions.
AWS Lambda & API Gateway VS Yandex.Cloud functions
| AWS Lambda & API Gateway | Yandex.Cloud functions | |
|---|---|---|
| Удобство создания функции | - (создавать нужно не только функцию, но и триггер из API Gateway) | + |
| Автоматическая установка пакетов | - (приходятся вручную добавлять в пакет для загрузки) | + (достаточно создать файл requirements.txt) |
| Поддержка асинхронности | +- (нужно самостоятельно запускать loop из синхронного хендлера) | + (работает "из коробки") |
| Поддержка Python 3.8 | + | - |
| Цена | + (выходит очень дёшево и есть огромный free tier) | - (примерно 50 рублей за миллион вызовов, бесплатно только в пробный период (2 месяца)) |
Настройка бота
Создание функции в Яндекс.Облаке
- Перейдите в консоль Яндекс.Облака
- Создайте платёжный профиль и облако
- В меню слева выберите Cloud Functions
- Создайте функцию
- В редакторе выберите среду выполнения
python37-preview(Это важно)
Загрузка кода в функцию
С помощью zip-файла
- Склонируйте данный репозиторий (
git clone https://github.com/DavisDmitry/aiogram-yandex.cloud-serverless-example) - Перейдите в директорию репозитория
- Поместите файлы
main.pyиrequierements.txtв zip архив вручную или с помощью bash-скрипта:./create-package.sh - Загрузите zip-архив в функцию Яндекс.Облака
- Укажите точку входа
main.handler - Выберите сервисный аккаунт или создайте новый
- Установите переменные окружения, они описаны ниже
С помощью редактора
- Создайте файлы
main.pyиrequirements.txt - Скопируйте содержимое из аналогичный файлов в репозитории
- Укажите точку входа
main.handler - Выберите сервисный аккаунт или создайте новый
- Установите переменные окружения, они описаны ниже
Переменные окружения:
TOKEN: Bot API token, полученный от botfatherLOGGING_LEVEL: уровень логирования (опцианально), по умолчанию -info
Profit!
P.S.
Код в данном репозитории почти полностью повторяет другую мою работу. Serverless технологии очень похожи у разных провайдеров.