Краткое руководство. Создание и публикация функции в Azure с помощью Java и MavenQuickstart: Use Java and Maven to create and publish a function to Azure

В этой статье описано, как создать и опубликовать функцию Java в службе "Функции Azure" с помощью средства командной строки Maven.This article shows you how to build and publish a Java function to Azure Functions with the Maven command-line tool. После завершения этого руководства код функции будет выполняться в Azure в бессерверном плане потребления с активацией по HTTP-запросу.When you're done, your function code runs in Azure in a serverless hosting plan and is triggered by an HTTP request.

предварительные требованияPrerequisites

Для разработки функций с помощью Java, должны быть установлены следующие компоненты:To develop functions using Java, you must have the following installed:

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начать работу.If you don't have an Azure subscription, create a free account before you begin.

Важно!

Переменной среде JAVA_HOME необходимо присвоить расположение установки JDK, чтобы завершить выполнение заданий этого краткого руководства.The JAVA_HOME environment variable must be set to the install location of the JDK to complete this quickstart.

Создание нового проекта функцийGenerate a new Functions project

В пустой папке выполните следующую команду, чтобы создать проект функций из архетипа Maven.In an empty folder, run the following command to generate the Functions project from a Maven archetype.

Linux/macOSLinux/macOS

mvn archetype:generate \
    -DarchetypeGroupId=com.microsoft.azure \
    -DarchetypeArtifactId=azure-functions-archetype 

Примечание

Если не удается запустить команду, проверьте, какая версия maven-archetype-plugin используется.If you're experiencing issues with running the command, take a look at what maven-archetype-plugin version is used. Так как команда выполняется в пустом каталоге без файла .pom, она может пытаться использовать более старую версию плагина из расположения ~/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin, если вы обновили Maven из предыдущей версии.Because you are running the command in an empty directory with no .pom file, it might be attempting to use a plugin of the older version from ~/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin if you upgraded your Maven from an older version. В таком случае попробуйте удалить каталог maven-archetype-plugin и повторно выполнить команду.If so, try deleting the maven-archetype-plugin directory and re-running the command.

WindowsWindows

mvn archetype:generate `
    "-DarchetypeGroupId=com.microsoft.azure" `
    "-DarchetypeArtifactId=azure-functions-archetype"
mvn archetype:generate ^
    "-DarchetypeGroupId=com.microsoft.azure" ^
    "-DarchetypeArtifactId=azure-functions-archetype"

Maven запрашивает значения, которые позволят завершить создание проекта развертывания.Maven asks you for values needed to finish generating the project on deployment. Предоставьте следующие значения в ответ на соответствующие запросы:Provide the following values when prompted:

ЗначениеValue DescriptionDescription
groupIdgroupId Это значение уникально идентифицирует проект среди всех остальных. Оно должно соответствовать правилам именования пакетов для Java.A value that uniquely identifies your project across all projects, following the package naming rules for Java. В примерах, приведенных в этом кратком руководстве, используется com.fabrikam.functions.The examples in this quickstart use com.fabrikam.functions.
artifactIdartifactId Это значение содержит имя JAR-файла, без номера версии.A value that is the name of the jar, without a version number. В примерах, приведенных в этом кратком руководстве, используется fabrikam-functions.The examples in this quickstart use fabrikam-functions.
versionversion Выберите значение по умолчанию 1.0-SNAPSHOT.Choose the default value of 1.0-SNAPSHOT.
packagepackage Это значение определяет пакет Java для создаваемого кода функции.A value that is the Java package for the generated function code. Используйте значение по умолчанию.Use the default. В примерах, приведенных в этом кратком руководстве, используется com.fabrikam.functions.The examples in this quickstart use com.fabrikam.functions.
appNameappName Глобально уникальное имя для нового приложения-функции в Azure.Globally unique name that identifies your new function app in Azure. Сохраните значение по умолчанию, которое составляется из значения artifactId и случайного числа.Use the default, which is the artifactId appended with a random number. Запишите это значение, так как оно потребуется позднее.Make a note of this value, you'll need it later.
appRegionappRegion Выберите ближайший регион или регион рядом с другими службами, к которому получают доступ ваши функции.Choose a region near you or near other services your functions access. Значение по умолчанию — westus.The default is westus. Чтобы получить список всех регионов, выполните такую команду Azure CLI:Run this Azure CLI command to get a list of all regions:
az account list-locations --query '[].{Name:name}' -o tsv
resourceGroupresourceGroup Имя для новой группы ресурсов, в которой создается приложение-функция.Name for the new resource group in which to create your function app. Укажите значение myResourceGroup, которое используется в примерах, приведенных в этом кратком руководстве.Use myResourceGroup, which is used by examples in this quickstart. Имя группы ресурсов должно быть уникальным в пределах подписки Azure.A resource group must be unique to your Azure subscription.

Введите Y или нажмите клавишу ВВОД для подтверждения.Type Y or press Enter to confirm.

Maven создаст файлы проекта в новой папке с именем artifactId, то есть fabrikam-functions в нашем примере.Maven creates the project files in a new folder with a name of artifactId, which in this example is fabrikam-functions.

Откройте в текстовом редакторе новый файл Function.java из папки src/main/java и изучите созданный код.Open the new Function.java file from the src/main/java path in a text editor and review the generated code. Этот код содержит активируемую по HTTP-запросу функцию, которая возвращает текст запроса.This code is an HTTP triggered function that echoes the body of the request.

Локальное выполнение функцииRun the function locally

Выполните следующую команду, которая назначает созданную папку проекта текущим каталогом, компилирует и запускает проект функции:Run the following command, which changes the directory to the newly created project folder, then builds and runs the function project:

cd fabrikam-function
mvn clean package 
mvn azure-functions:run

При локальном выполнении проекта вы увидите следующие выходные данные Azure Functions Core Tools:You see output like the following from Azure Functions Core Tools when you run the project locally:

...

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

Http Functions:

    HttpTrigger-Java: [GET,POST] http://localhost:7071/api/HttpTrigger-Java
...

Вызовите функцию из командной строки, запустив cURL в новом окне терминала:Trigger the function from the command line using cURL in a new terminal window:

curl -w "\n" http://localhost:7071/api/HttpTrigger-Java --data AzureFunctions
Hello AzureFunctions!

Ключ функции при локальном выполнении не требуется.The function key isn't required when running locally. Используйте Ctrl+C в терминале, чтобы остановить код функции.Use Ctrl+C in the terminal to stop the function code.

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

Приложение-функция и связанные ресурсы создаются в Azure при первом развертывании приложения-функции.A function app and related resources are created in Azure when you first deploy your function app. Перед развертыванием выполните команду az login в Azure CLI, чтобы войти в подписку Azure.Before you can deploy, use the az login Azure CLI command to sign in to your Azure subscription.

az login

Совет

Если ваша учетная запись имеет доступ к нескольким подпискам, задайте подписку по умолчанию для текущего сеанса с помощью команды az account set.If your account can access multiple subscriptions, use az account set to set the default subscription for this session.

Используйте следующую команду Maven, чтобы развернуть проект в виде нового приложения-функции.Use the following Maven command to deploy your project to a new function app.

mvn azure-functions:deploy

Этот целевой объект Maven azure-functions:deploy создает в Azure такие ресурсы:This azure-functions:deploy Maven target creates the following resources in Azure:

  • группа ресурсов;Resource group. Ей присваивается имя, которое вы указали в параметре resourceGroup.Named with the resourceGroup you supplied.
  • учетная запись хранения;Storage account. Требуется для Функций Azure.Required by Functions. Это имя создается случайным образом на основе требований к именованию учетных записей хранения.The name is generated randomly based on Storage account name requirements.
  • План Службы приложений.App service plan. Бессерверное размещение для приложения-функции в регионе, который указан в параметре appRegion.Serverless hosting for your function app in the specified appRegion. Это имя создается случайным образом.The name is generated randomly.
  • Приложение-функция.Function app. Приложение-функция представляет собой минимальную единицу развертывания и выполнения для ваших функций.A function app is the deployment and execution unit for your functions. Ему присваивается имя из параметра appName, к которому добавляется случайное число.The name is your appName, appended with a randomly generated number.

Развертывание также упаковывает файлы проекта и развертывает их в новом приложении-функции из ZIP-файла с включенным режимом выполнения из пакета.The deployment also packages the project files and deploys them to the new function app using zip deployment, with run-from-package mode enabled.

После завершения развертывания вы увидите URL-адрес, который можно использовать для доступа к конечным точкам приложения-функции.After the deployment completes, you see the URL you can use to access your function app endpoints. Так как опубликованный нами триггер HTTP использует authLevel = AuthorizationLevel.FUNCTION, вам нужно получить ключ функции для вызова конечной точки функции по протоколу HTTP.Because the HTTP trigger we published uses authLevel = AuthorizationLevel.FUNCTION, you need to get the function key to call the function endpoint over HTTP. Ключ функции проще всего получить на Портал Azure.The easiest way to get the function key is from the Azure portal.

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

Вы можете получить URL-адрес для активации функции (вместе с ключом функции) на портале Azure.You can get the URL required to trigger your function, with the function key, from the Azure portal.

  1. Перейдите на портал Azure, войдите в систему, введите имя приложения-функции в поле Поиск в верхней части страницы и нажмите клавишу ВВОД.Browse to the Azure portal, sign in, type the appName of your function app into Search at the top of the page, and press enter.

  2. В приложении-функции разверните Функции (только для чтения) , выберите созданную функцию и нажмите </> Получить URL-адрес функции в правом верхнем углу.In your function app, expand Functions (Read Only), choose your function, then select </> Get function URL at the top right.

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

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

Теперь скопированный URL-адрес можно использовать для доступа к функции.You can now use the copied URL to access your function.

Проверка функции в AzureVerify the function in Azure

Чтобы проверить работу приложения-функции в Azure с помощью cURL, замените URL из приведенного ниже примера реальным URL-адресом, который вы скопировали с портала.To verify the function app running on Azure using cURL, replace the URL from the sample below with the URL that you copied from the portal.

curl -w "\n" https://fabrikam-functions-20190929094703749.azurewebsites.net/api/HttpTrigger-Java?code=zYRohsTwBlZ68YF.... --data AzureFunctions

Это действие отправляет запрос POST в конечную точку функции с добавлением AzureFunctions в текст запроса.This sends a POST request to the function endpoint with AzureFunctions in the body of the request. Вы увидите следующий ответ:You see the following response.

Hello AzureFunctions!

Дальнейшие действияNext steps

Итак, вы создали проект с функцией Java, активируемой по HTTP-запросу, запустили ее на своем локальном компьютере и развернули в Azure.You've created a Java functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. Теперь расширьте свою функцию путем...Now, extend your function by...