Настройка FunctionGraph

Сервис FunctionGraph позволяет размещать и запускать код (функцию) в бессерверной среде. Запуск функции происходит на определенный пользователем триггер. FunctionGraph обеспечивает высокую доступность, масштабируемость и выполняет все функции администрирования вычислительных ресурсов, также устраняя необходимость в обслуживании серверов.

В этом разделе описаны настройки для библиотеки бота Telegram и создание функции с помощью этого сервиса. В качестве примера будет использована бибилиотека telebot.

Подготовка к загрузке зависимости FunctionGraph

Для установки библиотеки telebot потребуется виртуальная машина или ваш компьютер. На данный момент Python 3.6 поддерживает версия pyTelegramBotAPI 4.7.1

  1. Установите библиотеку «pyTelegramBotAPI 4.7.1», которую поддерживает версия Python 3.6.

    python3.6 -m pip install pyTelegramBotAPI==4.7.1 --root
    
  2. В текущем каталоге появится структура папок usr/.. Архивируйте содержимое каталога dist-packages. Например:

    zip -r telebot.zip ./usr/local/lib/python3.6/dist-packages
    
  3. Сохраните архив «telebot.zip» на своем устройстве. Например, для сохранения на Windows подойдет графический клиент WinSCP.

Создание зависимости FunctionGraph

  1. Войдите в консоль управления Advanced:

  2. Чтобы открыть список сервисов, нажмите Service List.

  3. Перейдите в раздел Computing → FunctionGraph.

  4. В боковом меню слева выберите Functions → Dependencies.

  5. Нажмите Create Dependency.

  6. Заполните следующие поля:

    • Name — укажите название.

    • Runtime — выберите из списка среду выполнения Python 3.6.

    • Description (опционально) — укажите описание зависимости, например «telebot».

    • Upload Mode — выберите режим загрузки файла зависимости: Upload ZIP file — загрузка ZIP-архива. Нажмите Select File и укажите путь к файлу.

    ../../_images/s__select-dependency.png
  7. Нажмите OK для подтверждения загрузки.

Создание функции FunctionGraph

  1. В консоли управления Advanced перейдите в раздел Computing → FunctionGraph.

  2. Нажмите Create Function и заполните следующие параметры:

    • Function Name — задайте название функции.

    • Runtime — укажите среду выполнения функции Python 3.6.

    • Appdefault.

    • Enterprise Project — укажите проект или оставьте по умолчанию «default».

  3. Перейдите к следующим настройкам, нажав Create Function.

  4. На вкладке Code в поле Dependencies нажмите Select, чтобы добавить ранее созданную зависимость. В нашем примере это зависимость с описанием «telebot».

    ../../_images/s__select-dependency.png
  5. Нажмите ОК.

  6. Скопируйте код бота и вставьте в редактор кода ниже.

    # -*- coding:utf-8 -*-
    import json
    import base64
    import telebot
    import logging
    import os
    
    API_TOKEN = json.loads(os.environ['RUNTIME_USERDATA'])['token']
    
    logger = telebot.logger
    telebot.logger.setLevel(logging.INFO)
    
    bot = telebot.TeleBot(API_TOKEN, threaded=False)
    
    def process_event(event):
        # Get telegram webhook json from event
        request_body_dict = json.loads(base64.b64decode(event['body']))
        # Parse updates from json
        update = telebot.types.Update.de_json(request_body_dict)
        # Run handlers and etc for updates
        bot.process_new_updates([update])
    
    def handler (event, context):
        # Process event from cloud and respond
        process_event(event)
        return {
            "statusCode": 200,
            "isBase64Encoded": False,
            "body": json.dumps(event),
            "headers": {
                "Content-Type": "application/json"
            }
        }
    
    # Handle '/start' and '/help'
    @bot.message_handler(commands=['help', 'start'])
    def send_welcome(message):
        bot.reply_to(message, "Hi there, I am EchoBot.")
    
    # Handle all other messages
    @bot.message_handler(func=lambda message: True, content_types=['text'])
    def echo_message(message):
        bot.reply_to(message, message.text)
    
  7. В правом верхнем углу нажмите Save.

  8. Перейдите на вкладку Configuration для создания шифрованной переменной среды.

  9. В поле Encryption Settings нажмите Add now?.

  10. Из мессенджера Telegram-чата «BotFather» скопируйте токен бота. Токен находится в сообщении об успешном создании бота, после «Use this token to access the HTTP API».

  11. Вставьте токен в поле Value, а в поле Key запишите слово «token».

  12. Нажмите Save.

    ../../_images/s__save-token.png

Функция в FunctionGraph настроена, теперь создайте группу API Gateway.

Масштабная конференция
GoCloud 2024:
облачные грани будущего