Рубрики
Без рубрики

Учебное пособие: Создание серверной части API без сервера для Slack [часть 1]

Эта статья является частью #Servicesseptember. Вы найдете другие полезные статьи, подробные учебные пособия… С тегами без сервера, учебник, показать разработчика, java.

Эта статья является частью #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

Пред- реквизиты

Прежде чем продолжить, убедитесь, что у вас готово следующее – это не должно занять слишком много времени

Пожалуйста, запишите свой 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 , который предоставляет “предварительно разогретые экземпляры для запуска вашего приложения без задержки после простоя…”

Ресурсы

Перечисленные ниже ресурсы были использованы специально для разработки демонстрационного приложения, представленного в этом сообщении в блоге, так что вы, скорее всего, тоже найдете их полезными!

Не забудьте ознакомиться со второй частью этого сообщения в блоге, где я подробно описал код

Я очень надеюсь, что вам понравилось и вы узнали что-то из этой статьи! Пожалуйста, поставьте лайк и следуйте за мной, если вы это сделали. Рад получить обратную связь через @abhi_tweeter или просто оставьте комментарий.

Оригинал: “https://dev.to/azure/funcy-a-serverless-slack-app-using-azure-functions-4m84”