База знаний

Список статей
Наверх

Облачные функции

Описание услуги

Облачные функции - это сервис бессерверных вычислений в Облачной платформе Selectel, который позволяет создавать приложения, не заботясь о поддержке инфраструктуры.

Сервис построен на базе serverless-платформы Apache OpenWhisk. Доступная среда выполнения: Python 3.6.

Ограничения

  • RAM - 512 МБ
  • Загружаемый код - 10 МБ
  • Одновременные вызовы - 100 штук
  • Максимальное время выполнения функции до таймаута - 60 секунд

Глоссарий

ТерминОпределение
ФункцияОтдельный блок кода, который выполняет определенное действие. Код должен быть написан без сохранения состояния, то есть не должен зависеть от конкретной вычислительной инфраструктуры. Функции могут включать в себя библиотеки, в том числе встроенные
Вызов функцииИнициация вычисления функции. Можно вызвать с помощью Comment end HTTP-запроса или вручную в режиме тестирования
Публичная функцияЕсли функция публичная, это значит, что она доступна для любых пользователей Интернета по URL. Если функция непубличная, ее можно только протестировать в разделе Тестирование
Способ вызоваС помощью чего происходит вызов функции. Сейчас в качестве способа вызова функции доступны HTTP запросы

Решаемые задачи

Облачные функции подходят для:

  • автоматизации фоновых задач (отправка писем, генерация скриншотов или работа с API);
  • вычислений на статичных сайтах;
  • процессов extract, transform, load (ETL) на основе событий;
  • бэкенда для API и мобильных приложений.

Оплата и биллинг

Во время тестового периода (первый квартал 2020) услуга предоставляется бесплатно. На услуги в тестовом использовании SLA Облачной платформы не распространяется. На время тестового периода не рекомендуется использовать услугу для запуска основных рабочих приложений.

Управление функциями

Запуск первой функции

Как создать функцию:

  1. Авторизуйтесь в панели управления.
  2. Перейдите в раздел Облачная платформа.
  3. Создайте проект и перейдите во вкладку Функции.
  4. Нажмите кнопку Создать функцию
  5. Укажите уникальное имя функции.
  6. На вкладке Настройки нажмите кнопку Редактировать.
  7. Загрузите код в архиве в формате .tar* и укажите путь к файлу с кодом в архиве или загрузите только файл с кодом в формате .py. Укажите имя функции из кода, которую вы хотите создать, и переменные окружения при необходимости.
  8. Кроме файла с функцией, в tar-архивах также должны быть файл requirements.txt (список библиотек, не входящих в стандартную библиотеку Python) и setup.py (установочный файл). Ограничение размера для всего архива — 10МБ.
  9. Нажмите кнопку Сохранить и развернуть.
  10. Чтобы получить URL-ссылку для вызова функции, сделайте вашу функцию публичной.

Редактирование функции

Для внесения изменения в функцию:

  1. Откройте проект с функцией и перейдите на вкладку Функции.
  2. Выберите необходимую функцию из списка.
  3. В открывшемся окне нажмите кнопку Редактировать.
  4. Внесите необходимые изменения и измените имя функции на новое уникальное.
  5. Нажмите кнопку Сохранить и развернуть.

При изменениях в функции создастся новая функция, поэтому нужно будет скопировать новый URL.

Удаление функции

Для удаления функции:

  1. Откройте проект с функцией и перейдите на вкладку Функции.
  2. Выберите необходимую функцию из списка.
  3. Нажмите кнопку с изображением мусорной корзины (Удалить функцию).

Часто задаваемые вопросы

Какие языки программирования поддерживают Облачные функции?

Во время тестового периода доступен только Python.

Где хранится мой код?

Файлы с кодом хранятся в контейнерах Облачного хранилища Selectel.

В каких регионах доступны Облачные функции?

Регион: ru1-b

Какой код можно загружать?

Мы рекомендуем использовать deployment-friendly код.

Как я могу вызвать функцию?

На данный момент доступен только вызов по HTTP-запросу, а также вызов функции вручную в рамках тестирования.

Как использовать URL?

URL становится доступен для развернутых публичных функций. Он меняется после каждого развертывания.

Необходимо скопировать URL для вызова функции в свое приложение туда, где она должна вызываться. Вызывать функцию можно методом GET и POST. При использовании метода POST в тело запроса можно передавать входные параметры для функции. Входные параметры нужно передавать в поле kwargs. Например, если вам нужно передать в функцию параметр user, тогда в тело запроса нужно передать {"kwargs": {"user": "tema"}}.

На вкладке Тестирование kwargs указывать не нужно.

Возвращается пустой лог, что это значит?

Возможно, код написан не совсем корректно. Попробуйте внести правки в код функции.

Как указать путь к файлу в архиве?

Например, файл module.py лежит в папке main, которая лежит в архиве arch.tar. Тогда нужно указать main/module.

Мой код не работает, что делать?

Возможно, код написан не совсем корректно. Попробуйте внести правки в код функции. Мы рекомендуем использовать deployment-friendly код.