Эта статья является частью #Servicesseptember. Вы найдете другие полезные статьи, подробные учебные пособия и видео в этой коллекции бессерверного контента “Все для всех”. Новые статьи публикуются каждый день — правильно, каждый день — от членов сообщества и сторонников облачных технологий в сентябре месяце.
Узнайте больше о том, как Microsoft Azure включает ваши бессерверные функции по адресу https://docs.microsoft.com/azure/azure-functions/ .
Бэкенды Webhook являются популярным вариантом использования для бессерверных функций. Предложения FaaS (Функции как услуга) позволяют относительно легко предоставить конечную точку HTTP, в которой размещена логика Webhook, которая может быть такой же простой, как отправка электронной почты на что-то столь же интересное, как ответ с забавными GIF-файлами!
В этом уроке мы рассмотрим fancy – бэкэнд веб-крючка без сервера, который является урезанной версией потрясающего Giphy для Slack . (Оригинал) Приложение Giphy Slack возвращает кучу GIF-файлов для поискового запроса, и пользователь может выбрать один из них. fancy немного подправляет его, просто возвращая (одно) случайное изображение для ключевого слова поиска с помощью Giphy Random API
В этом сообщении в блоге содержится пошаговое руководство по развертыванию приложения в Функции Azure и подключению его к рабочей области Slack. Код доступен на GitHub чтобы ты грокнул.
Если вы заинтересованы в изучении бессерверной разработки с Функциями Azure , просто создайте бесплатную учетную запись Azure и приступайте к работе! Я бы настоятельно рекомендовал ознакомиться с краткими руководствами, учебными пособиями и примерами кода в документации, используйте путь обучения с руководством в случае, если это ваш стиль, или загрузите Поваренную книгу по бессерверным вычислениям .
Для того, чтобы этот блог был кратким, детали кода были рассмотрены в следующем посте.
Учебное пособие: Создание серверной части API без сервера для Slack [часть 2]
Абхишек Гупта для Microsoft Azure ・ 4 сентября 19 ・ 7 минут читать
Обзор
fancy
построена как команда косой черты в Slack. Как пользователь, вы можете вызвать его из своей рабочей области Slack, используя /fancy <ваш поисковый запрос>
. Это, в свою очередь, вызывает наш веб-хук, развернутый в Функции Azure , который представляет собой не что иное, как набор Java-кода . Он вызывает Giphy Random API и возвращает результат пользователю.
Например, вызов его из рабочей области Slack с помощью /fancy без сервера
вернет случайный GIF.
В следующих разделах вы узнаете о следующем:
- Пред- реквизиты
- Слабая настройка и настройка
- Развертывание функций в Azure
Пред- реквизиты
Прежде чем продолжить, убедитесь, что у вас готово следующее – это не должно занять слишком много времени
- Maven – Плагин Maven для функций Azure используется для создания и развертывания вашей функции Java. Если у вас нет Maven, пожалуйста, установите
v 3.0
или выше отсюда . - Azure CLI – Следуйте инструкциям для настройки и входа в Azure CLI.
- Рабочее пространство Slack – Пожалуйста, создайте рабочее пространство Slack если у вас его нет.
- API-ключ GIPHY – Вам нужно создать учетную запись GIHPY (это бесплатно!) и создать приложение . Каждое созданное вами приложение будет иметь свой собственный ключ API.
Пожалуйста, запишите свой API-ключ GIPHY, так как вы будете использовать его позже
Настройка Провисания
Пожалуйста, обратите внимание, что инструкции в этом разделе были адаптированы из документации Slack
Создайте приложение Slack
Войдите в свое рабочее пространство Slack . Начните с создания нового приложения Slack
Создайте команду косой черты
Как только вы закончите создавать приложение, перейдите на страницу настроек вашего приложения, а затем нажмите Команды косой черты в меню навигации.
Вам будет представлена кнопка с пометкой Создайте новую команду , и когда вы нажмете на нее, вы увидите экран, на котором вам будет предложено определить вашу новую команду Косой черты с необходимой информацией.
Введите необходимую информацию. Пожалуйста, обратите внимание, что в поле URL-адрес запроса вы введете конечную точку функции HTTP, которая будет доступна после ее развертывания. Вы можете использовать фиктивный URL-адрес в качестве заполнителя только на данный момент например https://temporary.com:4242
Как только вы закончите, нажмите Сохранить для завершения.
Установите приложение в свое рабочее пространство
Как только вы закончите создавать команду косой черты, перейдите на страницу настроек вашего приложения, нажмите Основная информация функция в меню навигации, выберите Установить приложение в рабочее пространство и нажмите Установить приложение в рабочую область – это установит приложение в вашу рабочую область Slack, чтобы протестировать ваше приложение и сгенерировать токены, необходимые для взаимодействия с API Slack.
Как только вы закончите установку приложения, Учетные данные приложения появятся на той же странице. Вам нужно захватить свой Секрет подписи Slack оттуда
Запишите секрет подписи вашего приложения, так как вы будете использовать его позже
Развертывание в Azure
Начните с клонирования репозитория GitHub и перейдите в каталог приложений
git clone https://github.com/abhirockzz/funcy-azure-functions cd funcy-azure-functions
В pom.xml
файл содержит следующие атрибуты, используемые функциями Azure Плагин Maven – имя приложения ( имя приложения функции
), регион ( регион приложения функции
) и группа ресурсов ( functionResourceGroup
). Он имеет значения по умолчанию для вышеуказанных параметров, поэтому вы можете продолжить их использование, если хотите.
имя приложения функции
–- необычное приложение
регион приложения функций- запад США
функциональная группа ресурсов
Обратите внимание, что имя приложения должно быть уникальным в Azure.
Если вы хотите изменить значения, пожалуйста, взгляните на этот фрагмент из pom.xml
который выделяет <свойства>
которые необходимо обновить
UTF-8 1.8 1.8 1.3.1 1.3.0 YOUR_APP_NAME AZURE_REGION RESOURCE_GROUP_NAME ${project.build.directory}/azure-functions/${functionAppName}
Имя функции не совпадает с именем приложения (настроено через pom.xml
) и указывается с помощью аннотации @functionName
в коде Java для функции – в этом случае имя funcy
.
Теперь вы можете создать функцию и развернуть ее в Azure
//build mvn clean package //deploy mvn azure-functions:deploy
Результаты успешного развертывания будут выглядеть примерно так
[INFO] Successfully updated the function app.funcyapp [INFO] Trying to deploy the function app... [INFO] Trying to deploy artifact to funcyapp... [INFO] Successfully deployed the artifact to https://funcyapp.azurewebsites.net [INFO] Successfully deployed the function app at https://funcyapp.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS
Используйте Интерфейс командной строки Azure для перечисления приложений функций
az functionapp list --query "[].{hostName: defaultHostName, state: state}"
Вы должны увидеть вывод JSON
[ { "hostName": "funcyapp.azurewebsites.net", "state": "Running" } ]
Вы должны иметь возможность видеть функцию (в разделе Приложение функции
меню) в Портал Azure
После успешного развертывания функция должна быть готова к обслуживанию запросов и к ней можно получить доступ по протоколу HTTP(s) в следующей конечной точке – https://<ИМЯ_ПРИЛОЖЕНИЯ>.azurewebsites.net/api/<ИМЯ_ФУНКЦИИ>
Для приложения с именем fancy app
с функцией fancy
конечной точкой будет
https://funcyapp.azurewebsites.net/api/funcy
Ты почти на месте!
Обновите приложение функций Azure
Теперь, когда приложение функций Azure запущено и запущено, вам необходимо обновить его, чтобы заполнить ключ API Giphy
и Вялый Секрет Подписи
в качестве переменных среды.
az functionapp config appsettings set --name--resource-group --settings "SLACK_SIGNING_SECRET= " "GIPHY_API_KEY= "
напр.
az functionapp config appsettings set --name funcyapp --resource-group java-functions-group --settings "SLACK_SIGNING_SECRET=foobarb3062bd293b1a838276cfoobar" "GIPHY_API_KEY=foobarrOqMb5fvJdIuxTCr3WUDfoobar"
Пожалуйста, обратитесь к документации по Как управлять функциональным приложением на портале Azure для получения дополнительной информации.
Обновите приложение Slack
Перейдите на страницу настроек вашего приложения, а затем щелкните функцию Команды косой черты в меню навигации. Отредактируйте команду и замените значение поля URL-адрес запроса своей функцией HTTP(s) конечная точка
чудесное время!
Из своего рабочего пространства вызовите команду
//необычный <поисковый запрос>
Поскольку вы не можете ошибиться с кошками, попробуйте
//необычный кот
Не волнуйтесь, если вы увидите Ошибка тайм-аута
из-за провисания после первого вызова. Это связано с проблемой “холодного запуска”, когда загрузка функции занимает несколько секунд но Slack ожидает ответа через 3 секунды . Просто повторите попытку (пару раз), и все должно быть в порядке.
Если ваше приложение не может позволить себе задержку из-за “холодного запуска в режиме ожидания”, вам может потребоваться проверить Премиум-план Azure Functions , который предоставляет “предварительно разогретые экземпляры для запуска вашего приложения без задержки после простоя…”
Ресурсы
Перечисленные ниже ресурсы были использованы специально для разработки демонстрационного приложения, представленного в этом сообщении в блоге, так что вы, скорее всего, тоже найдете их полезными!
- Руководство для разработчиков функций Azure (общее) и руководство разработчика Java по функциям Azure
- Краткое руководство по использованию Java для создания и публикации функции в функциях Azure
- Плагин Maven для функций Azure
- Как локально кодировать и тестировать функции Azure
- Как управлять подключениями в функциях Azure
- Плагины Maven для служб Azure на GitHub
Не забудьте ознакомиться со второй частью этого сообщения в блоге, где я подробно описал код
Я очень надеюсь, что вам понравилось и вы узнали что-то из этой статьи! Пожалуйста, поставьте лайк и следуйте за мной, если вы это сделали. Рад получить обратную связь через @abhi_tweeter или просто оставьте комментарий.
Оригинал: “https://dev.to/azure/funcy-a-serverless-slack-app-using-azure-functions-4m84”