aiogram-yandex.cloud-serverless-example icon indicating copy to clipboard operation
aiogram-yandex.cloud-serverless-example copied to clipboard

Пример простого Telegram бота на Aiogram для Yandex.Cloud functions.

Aiogram Yandex.Cloud serverless example

Supported python versions Telegram Bot API Aiogram Yandex.Cloud

Пример простого 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, полученный от botfather
  • LOGGING_LEVEL: уровень логирования (опцианально), по умолчанию - info

Profit!

P.S.

Код в данном репозитории почти полностью повторяет другую мою работу. Serverless технологии очень похожи у разных провайдеров.