Пример простого Telegram бота на Aiogram для 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
(Это важно)
- Склонируйте данный репозиторий (
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
Код в данном репозитории почти полностью повторяет другую мою работу. Serverless технологии очень похожи у разных провайдеров.