Создание и публикация функции в 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 Core Tools 2.6.666 или более поздней версии.
  • Gradle, версии 6.8 или выше

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

Внимание

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

Подготовьте проект Azure Functions

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

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

Откройте 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 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 Functions. Это имя создается случайным образом на основе требований к именованию учетных записей хранения.
  • План службы приложений. Бессерверное размещение плана потребления для приложения-функции в регионе, который указан в параметре region. Это имя создается случайным образом.
  • Приложение-функция. Приложение функций — это единица развертывания и выполнения ваших функций. Название — это ваше appName, к которому добавлено случайно сгенерированное число.

Развертывание также упаковывает файлы проекта и разворачивает их в новом функциональном приложении с помощью ZIP-деплоймента с включённым режимом run-from-package.

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

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

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

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

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

    Копирование URL-адреса функции с портала Azure

  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. Теперь расширьте свою функцию путем...