Создание и публикация функции в Azure с помощью Java и Gradle

В этой статье описано, как создать и опубликовать проект функции Java в службе "Функции Azure" с помощью программы командной строки Gradle. После завершения этого руководства код функции будет выполняться в Azure в бессерверном плане потребления с активацией по HTTP-запросу.

Примечание.

Если вы не хотите использовать Gradle в качестве средства разработки, ознакомьтесь с аналогичными руководствами для разработчиков Java по использованию Maven, IntelliJ IDEA и VS Code.

Необходимые компоненты

Для разработки функций с помощью Java, должны быть установлены следующие компоненты:

  • Пакет разработчиков Java, версия 8, 11, 17 или 21. (в настоящее время Java 21 поддерживается только в предварительной версии в Linux)
  • Azure CLI
  • Azure Functions Core Tools 2.6.666 или более поздней версии.
  • Gradle 6.8 или более поздней версии

Вам также потребуется действующая подписка Azure. Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Важно!

Переменной среде JAVA_HOME необходимо присвоить расположение установки JDK, чтобы завершить выполнение заданий этого краткого руководства.

Подготовка проекта Функций Azure

Используйте следующую команду, чтобы клонировать пример проекта:

git clone https://github.com/Azure-Samples/azure-functions-samples-java.git
cd azure-functions-samples-java/

Откройте build.gradle и измените appName в следующем разделе на уникальное имя, чтобы избежать конфликта доменных имен при развертывании в Azure.

azurefunctions {
    resourceGroup = 'java-functions-group'
    appName = 'azure-functions-sample-demo'
    pricingTier = 'Consumption'
    region = 'westus'
    runtime {
      os = 'windows'
    }
    localDebug = "transport=dt_socket,server=y,suspend=n,address=5005"
}

Откройте в текстовом редакторе новый файл Function.java из папки src/main/java и изучите созданный код. Этот код содержит активируемую по HTTP-запросу функцию, которая возвращает текст запроса.

Локальное выполнение функции

Выполните следующую команду, чтобы собрать и запустить проект функции:

gradle jar --info
gradle azureFunctionsRun

При локальном выполнении проекта вы увидите следующие выходные данные Azure Functions Core Tools:

...

Now listening on: http://0.0.0.0:7071
Application started. Press Ctrl+C to shut down.

Http Functions:

    HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
...

В новом окне терминала активируйте функцию из командной строки с помощью указанной ниже команды cURL.

curl -w "\n" http://localhost:7071/api/HttpExample --data AzureFunctions

Ожидаемый результат должен выглядеть так, как показано ниже.

Hello, AzureFunctions

Примечание.

Если вы задали значение authLevel для FUNCTION или ADMIN, то ключ функции при локальном выполнении не требуется.

Используйте Ctrl+C в терминале, чтобы остановить код функции.

Развертывание функции для Azure

Приложение-функция и связанные ресурсы создаются в Azure при первом развертывании приложения-функции. Перед развертыванием выполните команду az login в Azure CLI, чтобы войти в подписку Azure.

az login

Совет

Если ваша учетная запись имеет доступ к нескольким подпискам, задайте подписку по умолчанию для текущего сеанса с помощью команды az account set.

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

gradle azureFunctionsDeploy

На основе значений в файле build.gradle в Azure создаются указанные ниже ресурсы.

  • Группа ресурсов. Ей присваивается имя, которое вы указали в параметре resourceGroup.
  • учетной записи хранения. Требуется для Функций Azure. Это имя создается случайным образом на основе требований к именованию учетных записей хранения.
  • плана службы приложений. Бессерверное размещение плана потребления для приложения-функции в регионе, который указан в параметре region. Это имя создается случайным образом.
  • Приложение-функция. Приложение-функция представляет собой минимальную единицу развертывания и выполнения для ваших функций. Ему присваивается имя из параметра appName, к которому добавляется случайное число.

Развертывание также упаковывает файлы проекта и развертывает их в новом приложении-функции из ZIP-файла с включенным режимом выполнения из пакета.

В примере проекта для параметра authLevel для триггера HTTP задано значение ANONYMOUS, что позволяет пропустить проверку подлинности. Но при использовании других значений authLevel, например FUNCTION или ADMIN, необходимо получить ключ функции для вызова конечной точки функции по протоколу HTTP. Ключ функции проще всего получить на портале Azure.

Получение URL-адреса триггера HTTP

Вы можете получить URL-адрес для активации функции (вместе с ключом функции) на портале Azure.

  1. Перейдите на портал Azure, войдите в систему, введите имя приложения-функции в поле Поиск в верхней части страницы и нажмите клавишу ВВОД.

  2. В приложении-функции нажмите Функции, выберите созданную функцию и щелкните Получить URL-адрес функции в правом верхнем углу.

    Copy the function URL from the Azure portal

  3. Выберите вариант по умолчанию (функциональная клавиша) и нажмите Копировать.

Теперь скопированный URL-адрес можно использовать для доступа к функции.

Проверка функции в Azure

Чтобы проверить работу приложения-функции в Azure с помощью cURL, замените URL из приведенного ниже примера реальным URL-адресом, который вы скопировали с портала.

curl -w "\n" http://azure-functions-sample-demo.azurewebsites.net/api/HttpExample --data AzureFunctions

Это действие отправляет запрос POST в конечную точку функции с добавлением AzureFunctions в текст запроса. Вы увидите следующий ответ:

Hello, AzureFunctions

Следующие шаги

Итак, вы создали проект с функцией Java, активируемой по HTTP-запросу, запустили ее на своем локальном компьютере и развернули в Azure. Теперь расширьте свою функцию путем...