Одним из современных архитектурных подходов в области облачных вычислений является так называемый Serverless. Этот способ запуска приложений в облаке освобождает разработчиков от нужды администрировать сервер и заботиться о чем-то, кроме кода.
Очевидно, что для такой задачи, как телеграм бот, этот подход очень удобен.
В этой статье описаны все шаги для запуска бота в Yandex.Cloud Functions. Опоры на код я не делаю. Наша основная задача сейчас — настроить запуск в облаке.
Создадим бота
Чтобы создать телеграмм бота, нужно воспользоваться @BotFather. Для этого используйте команду /new_bot
. Скопируйте токен (он будет там, где оранжевая полоса)
![](https://habrastorage.org/getpro/habr/upload_files/10c/f8d/b3e/10cf8db3ea8753bd77c30f84eaeca186.png)
Настройка Yandex.Cloud
Для работы с Яндекс.Облаком перейдите на сайт https://cloud.yandex.ru/ и войдите в свой аккаунт. Если вы все сделали правильно, вы увидите рабочий дашборд.
Cloud Functions
-
Перейдите в раздел Cloud Functions
![](https://habrastorage.org/getpro/habr/upload_files/ca2/f3d/62e/ca2f3d62e297f5b34fa6f99c0f1b616e.png)
-
Создайте новую функцию c названием, например,
python-tg-bot
.
![](https://habrastorage.org/getpro/habr/upload_files/836/af9/41b/836af941bf29f8ab992d29228c660d1e.png)
-
Укажите язык python и выберите самую последнюю версию (python3.8 на момент написания этой статьи).
![](https://habrastorage.org/getpro/habr/upload_files/c2c/36e/0bb/c2c36e0bb430d8e0decb85814e960e01.png)
-
В настройках функции загрузите код бота. Скачать архив можно по ссылке. Параметры укажите как на картинке. В переменные окружения добавьте поле
BOT_TOKEN
и вставьте токен, полученный в самом начале. После обязательно нажмите Создать версию, чтобы запустить функцию.
![](https://habrastorage.org/getpro/habr/upload_files/f46/4b5/c69/f464b5c69ec025ff13b41ab297cf18f7.png)
-
Запомним идентификатор функции (первая строка)
![](https://habrastorage.org/getpro/habr/upload_files/acd/d1e/ff7/acdd1eff70f9e454130af24fb9c2f5f1.png)
API-Gateway
Чтобы мы смогли получить доступ к нашей функции, нужно настроить API-Gateway.
-
Перейдите в раздел API-Gateway
![](https://habrastorage.org/getpro/habr/upload_files/32c/1e0/3f4/32c1e03f413f6d215888297f8de93c81.png)
-
Создайте новый шлюз и настройте его. Скопируйте конфигурацию и замените
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
![](https://habrastorage.org/getpro/habr/upload_files/315/64d/631/31564d6310d401c3dadd3312398e2e75.png)
-
Запомним ссылку, по которой можно вызвать нашу функцию
![](https://habrastorage.org/getpro/habr/upload_files/054/ab7/896/054ab78961b7cef6a685d1c242854601.png)
Устанавливаем webhook
Теперь нужно сообщить телеграму, куда отправлять информацию о новых сообщениях.
Для этого:
-
Установите библиотеку
pip install pyTelegramBotAPI
-
Запустите питоновский скрипт:
import telebot bot = telebot.TeleBot("YOUR_TOKEN") bot.remove_webhook() bot.set_webhook("YOUR_URL")
Тестируем
![](https://habrastorage.org/getpro/habr/upload_files/e50/41d/c0f/e5041dc0f83b88f8947040932f4bd29f.png)
Сделали «эхо-бота». Что дальше?
Как говорилось в начале, такой способ запустить бота очень легок для разработчика, но что же делать, если нам нужна база данных или сложные 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 ГБ/месяц хранения данных.
-
Полезные ссылки
ссылка на оригинал статьи https://habr.com/ru/post/550456/
Добавить комментарий