Большинство мобильных и веб-приложений нуждаются в алгоритмах, работающих на стороне сервера. Это может быть, например, функциональность, связанная со сложной обработкой данных или с интеграцией со сторонними системами. В extremum для создания сервеной логики служат serverless-функции и их пакеты
В этом руководстве мы напишем простую serverless-функцию, развернем ее в экземпляре платформы, а затем проверим ее работу при непосредственном вызове и при работе в качестве обработчика сигнала
Если вы проходили другие руководства из этого раздела, вы, вероятно, уже выполнили перечисленные ниже шаги. В этом случае достаточно выполнить только аутентификацию в платформе, так как имеющийся у вас токен мог устареть
Установите необходимое вспомогательное ПО
Установите интерфейс командной строки extremum CLI
Создайте новое приложение. Назовите его pusk.fm
Вы можете выбрать другое имя для вашего приложения. В этом случае, при выполнении дальнейших упражнений этого руководства вам следует заменять pusk.fm на выбранное вами имя
Выполните аутентификацию в платформе extremum
Мы напишем нашу функцию на языке JavaScript. Откройте в текстовом редакторе файл index.js и введите следующий текст:
module.exports = async function(event, context) {
var text = "fun";
return {
statusCode: 200,
body: JSON.stringify(text),
};
};
Теперь давайте сохраним файл и поместим его в zip-архив с именем fun.zip
Ваша первая функция готова к развертыванию!
В терминале перейдем в каталог, в который мы поместили файл fun.zip, и выплним следующую команду:
$ pusk.fm functions create myfun --kind function --image binary -f fun.zip
Если все прошло успешно, в ответ вы получите сообщение:
Function created
Вызовем нашу функцию:
$ pusk.fm functions call myfun --data '{}'
В ответ мы должны получить значение свойства body возвращаемого значения нашей функции:
"fun"
Для полноценного прохождения данного задания ваш экземпляр extremum должен быть развернут в Яндекс Облаке, так как мы будем использовать его веб-интерфейс для просмотра журнала нашей функции
Создадим точку обмена сигналами, действуя по описанию из руководства “Отправка и получение сигналов”
Подпишем нашу функцию на сигнал:
$ pusk.fm signals subscribe 2a94ba33-190f-4d84-aeef-24eb4b03b57f --function myfun
В ответ нам будет сообщен идентификатор подписки
"0c9364d9-0dd7-4654-b2f9-e6cc46ededa3"
Перейдем в журнал нашей функции. Для этого:
Отправим сигнал:
$ pusk.fm signals send <exchange-uuid> --data "test"
В журнале в консоли Яндекс Облака появятся примерно такие записи, свидетельствующие о том, что функция была вызвана в роли обработчика для отправленного нами сигнала:
Удалим подписку
$ pusk.fm signals unsubscribe <subscription-id>
Удалим точку обмена
curl -X DELETE https://api.app-0.<ваш-домен>/v3/<exchange-uuid> \
-H 'Authorization: Bearer <токен-доступа>' \
-H 'X-App-Id: 0'
Удалим функцию
$ pusk.fm functions remove myfun