Serverless или запуск ботов без сервера
Настройка Yandex.Cloud
Для работы с Яндекс.Облаком перейдите на сайт https://cloud.yandex.ru/ и войдите в свой аккаунт. Если вы все сделали правильно, вы увидите рабочий дашборд.
Cloud Functions
- Перейдите в раздел Cloud Functions

- Создайте новую функцию c названием, например,
python-tg-bot.

- Укажите язык python и выберите самую последнюю версию (python3.8 на момент написания этой статьи).

- В настройках функции загрузите код бота. Скачать архив можно по ссылке. Параметры укажите как на картинке. В переменные окружения добавьте поле
BOT_TOKENи вставьте токен, полученный в самом начале. После обязательно нажмите Создать версию, чтобы запустить функцию.

- Запомним идентификатор функции (первая строка)

API-Gateway
Чтобы мы смогли получить доступ к нашей функции, нужно настроить API-Gateway.
- Перейдите в раздел API-Gateway

- Создайте новый шлюз и настройте его. Скопируйте конфигурацию и замените
YOUR_FUNCTION_IDна идентификатор функции, полученный ранее.
openapi: 3.0.0
info:
title: for-python-tg-bot
version: 1.0.0
paths:
/:
post:
x-yc-apigateway-integration:
type: cloud-functions
function_id: YOUR_FUNCTION_ID
operationId: tg-webhook-function

- Запомним ссылку, по которой можно вызвать нашу функцию

Устанавливаем webhook
Теперь нужно сообщить телеграму, куда отправлять информацию о новых сообщениях.
Для этого:
- Установите библиотеку
pip install pyTelegramBotAPI - Запустите питоновский скрипт:
import telebot
bot = telebot.TeleBot("YOUR_TOKEN")
bot.remove_webhook()
bot.set_webhook("YOUR_URL")
Тестируем

Сделали "эхо-бота". Что дальше?
Как говорилось в начале, такой способ запустить бота очень легок для разработчика, но что же делать, если нам нужна база данных или сложные api-запросы к другим ресурсам. Все это можно реализовать в Yandex.Cloud. Например, с помощью сервисов Yandex Database (тоже serverless) или Object Storage. Отдельные сервисы можно запустить, как отдельные функции. В следующей статье, я расскажу о том, как подключить базу данных Yandex Database к боту.
Именно возможность создавать все по кусочкам и уверенность в том, что однажды настроенный модуль будет работать всегда, отличает serverless подход от простого "давайте свалим все в одну виртуальную машину".
Тарифы Yandex.Cloud
До октября 2021 года на сервисы экосистемы бессерверных вычислений будут действовать специальные тарифы. В рамках этих тарифов определенный объем услуг не будет тарифицироваться. Объем рассчитан так, чтобы у вас была возможность разработать и запустить небольшой сервис, сайт или приложение.
- Yandex API Gateway
- Каждый месяц не тарифицируются первые 100 000 запросов к API-шлюзам.
- Yandex Cloud Functions
- Каждый месяц не тарифицируются:
- первые 1 000 000 вызовов функций;
- первые 10 ГБ×час выполнения функций.
- Бессерверный режим Yandex Database
- Каждый месяц не тарифицируются:
- первые 1 000 000 операций (в единицах RU);
- первый 1 ГБ/месяц хранения данных.