Démarrage rapide : Utiliser Java et Maven pour créer et publier une fonction sur AzureQuickstart: Use Java and Maven to create and publish a function to Azure

Cet article montre comment générer et publier une fonction Java sur Azure Functions avec l’outil en ligne de commande Maven.This article shows you how to build and publish a Java function to Azure Functions with the Maven command-line tool. Quand vous avez terminé, votre code de fonction s’exécute dans Azure dans un plan d’hébergement serverless et est déclenché par une requête HTTP.When you're done, your function code runs in Azure in a serverless hosting plan and is triggered by an HTTP request.

Conditions préalables requisesPrerequisites

Pour développer des fonctions avec Java, les éléments suivants doivent être installés :To develop functions using Java, you must have the following installed:

Si vous n’avez pas d’abonnement Azure, créez un compte gratuit avant de commencer.If you don't have an Azure subscription, create a free account before you begin.

Important

Pour pouvoir effectuer ce démarrage rapide, vous devez définir la variable d’environnement JAVA_HOME sur l’emplacement d’installation du JDK.The JAVA_HOME environment variable must be set to the install location of the JDK to complete this quickstart.

Générer un nouveau projet FunctionsGenerate a new Functions project

Dans un dossier vide, exécutez la commande suivante pour générer le projet Functions à partir d’un archétype 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 

Notes

Si vous rencontrez des problèmes avec l’exécution d’une commande, jetez un coup d’œil à la version maven-archetype-plugin utilisée.If you're experiencing issues with running the command, take a look at what maven-archetype-plugin version is used. Étant donné que vous exécutez la commande dans un répertoire vide dépourvu de fichier .pom, celle-ci essaie peut-être d’utiliser un plug-in de l’ancienne version à partir de ~/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin si vous avez mis à niveau Maven à partir d’une version antérieure.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. Dans ce cas, essayez de supprimer le répertoire maven-archetype-plugin et de réexécuter la commande.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 vous invite à entrer les valeurs nécessaires pour terminer la génération du projet lors du déploiement.Maven asks you for values needed to finish generating the project on deployment. Fournissez les valeurs suivantes à l’invite :Provide the following values when prompted:

ValeurValue DescriptionDescription
groupIdgroupId Valeur qui identifie de façon unique votre projet parmi tous les projets, avec respect des règles de nommage de package pour Java.A value that uniquely identifies your project across all projects, following the package naming rules for Java. Les exemples de ce guide de démarrage rapide utilisent com.fabrikam.functions.The examples in this quickstart use com.fabrikam.functions.
artifactIdartifactId Valeur qui correspond au nom du fichier jar, sans numéro de version.A value that is the name of the jar, without a version number. Les exemples de ce guide de démarrage rapide utilisent fabrikam-functions.The examples in this quickstart use fabrikam-functions.
versionversion Choisissez la valeur par défaut 1.0-SNAPSHOT.Choose the default value of 1.0-SNAPSHOT.
packagepackage Valeur qui correspond au package Java pour le code de fonction généré.A value that is the Java package for the generated function code. Utilisez la valeur par défaut.Use the default. Les exemples de ce guide de démarrage rapide utilisent com.fabrikam.functions.The examples in this quickstart use com.fabrikam.functions.
appNameappName Nom global unique qui identifie votre nouvelle application de fonction dans Azure.Globally unique name that identifies your new function app in Azure. Utilisez la valeur par défaut, qui est l’artifactId auquel est ajouté un nombre aléatoire.Use the default, which is the artifactId appended with a random number. Prenez note de cette valeur ; vous en aurez besoin plus tard.Make a note of this value, you'll need it later.
appRegionappRegion Choisissez une région près de chez vous ou près d’autres services auxquels ont accès vos fonctions.Choose a region near you or near other services your functions access. Par défaut, il s’agit de westus.The default is westus. Exécutez cette commande Azure CLI pour obtenir une liste de toutes les régions :Run this Azure CLI command to get a list of all regions:
az account list-locations --query '[].{Name:name}' -o tsv
resourceGroupresourceGroup Nom du nouveau groupe de ressources dans lequel créer votre application de fonction.Name for the new resource group in which to create your function app. Utilisez myResourceGroup, qui est utilisé par les exemples de ce guide de démarrage rapide.Use myResourceGroup, which is used by examples in this quickstart. Un groupe de ressources doit être unique dans votre abonnement Azure.A resource group must be unique to your Azure subscription.

Tapez Y ou appuyez sur Entrée pour confirmer.Type Y or press Enter to confirm.

Maven crée les fichiers projet dans un nouveau dossier avec le nom d’artifactId, qui est fabrikam-functions dans cet exemple.Maven creates the project files in a new folder with a name of artifactId, which in this example is fabrikam-functions.

Ouvrez le nouveau fichier Function.java à partir du chemin src/main/java dans un éditeur de texte et passez en revue le code généré.Open the new Function.java file from the src/main/java path in a text editor and review the generated code. Ce code est une fonction déclenchée par HTTP qui renvoie le corps de la requête.This code is an HTTP triggered function that echoes the body of the request.

Exécuter la fonction localementRun the function locally

Exécutez la commande suivante, qui remplace le répertoire par le dossier du projet nouvellement créé, puis génère et exécute le projet de fonction :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

Une sortie semblable à celle-ci est retournée par Azure Functions Core Tools quand vous exécutez le projet localement :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
...

Déclenchez la fonction à partir de la ligne de commande en utilisant cURL dans une nouvelle fenêtre de terminal :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!

La clé de fonction n’est pas nécessaire lors de l’exécution locale.The function key isn't required when running locally. Utilisez Ctrl+C dans le terminal pour arrêter le code de la fonction.Use Ctrl+C in the terminal to stop the function code.

Déployer la fonction sur AzureDeploy the function to Azure

Une application de fonction et les ressources associées sont créées dans Azure lors du déploiement initial de votre application de fonction.A function app and related resources are created in Azure when you first deploy your function app. Avant de procéder au déploiement, utilisez la commande Azure CLI az login pour vous connecter à votre abonnement Azure.Before you can deploy, use the az login Azure CLI command to sign in to your Azure subscription.

az login

Conseil

Si votre compte peut accéder à plusieurs abonnements, utilisez az account set pour définir l’abonnement par défaut pour cette session.If your account can access multiple subscriptions, use az account set to set the default subscription for this session.

Utilisez la commande Maven suivante pour déployer votre projet vers une nouvelle application de fonction.Use the following Maven command to deploy your project to a new function app.

mvn azure-functions:deploy

Cette cible Maven azure-functions:deploy crée les ressources suivantes dans Azure :This azure-functions:deploy Maven target creates the following resources in Azure:

  • Groupe de ressources.Resource group. Nommé avec le resourceGroup que vous avez fourni.Named with the resourceGroup you supplied.
  • Compte de stockage.Storage account. Requis par les fonctions.Required by Functions. Le nom est généré de façon aléatoire en fonction des exigences du nom de compte de stockage.The name is generated randomly based on Storage account name requirements.
  • Plan App Service.App service plan. Hébergement serverless pour votre application de fonction dans l’appRegion spécifiée.Serverless hosting for your function app in the specified appRegion. Le nom est généré de façon aléatoire.The name is generated randomly.
  • Application de fonction.Function app. Une application de fonction est l’unité de déploiement et d’exécution de vos fonctions.A function app is the deployment and execution unit for your functions. Le nom est l’appName, auquel est ajouté un numéro généré de façon aléatoire.The name is your appName, appended with a randomly generated number.

Le déploiement empaquette également les fichiers projet et les déploie dans la nouvelle application de fonction à l’aide de zip deployment, en activant le mode d’exécution à partir du package.The deployment also packages the project files and deploys them to the new function app using zip deployment, with run-from-package mode enabled.

Une fois le déploiement terminé, vous voyez l’URL que vous pouvez utiliser pour accéder aux points de terminaison de votre application de fonction.After the deployment completes, you see the URL you can use to access your function app endpoints. Étant donné que le déclencheur HTTP que nous avons publié utilise authLevel = AuthorizationLevel.FUNCTION, vous devez obtenir la clé de fonction pour appeler le point de terminaison de fonction sur 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. Le moyen le plus simple d’obtenir la clé de fonction consiste à passer par le Azure portal.The easiest way to get the function key is from the Azure portal.

Obtient l’URL du déclencheur HTTPGet the HTTP trigger URL

Vous pouvez obtenir l’URL requise pour déclencher votre fonction, avec la clé de fonction, à partir du portail Azure.You can get the URL required to trigger your function, with the function key, from the Azure portal.

  1. Accédez au Azure portal, connectez-vous, tapez l’appName de votre application de fonction dans Rechercher en haut de la page, puis appuyez sur Entrée.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. Dans votre application de fonction, développez Fonctions (Lecture seule) , choisissez votre fonction, puis sélectionnez </> Obtenir l’URL de fonction en haut à droite.In your function app, expand Functions (Read Only), choose your function, then select </> Get function URL at the top right.

    Copier l’URL de fonction à partir du portail Azure

  3. Choisissez par défaut (Clé de fonction) et sélectionnez Copier.Choose default (Function key) and select Copy.

Vous pouvez maintenant utiliser l’URL copiée pour accéder à votre fonction.You can now use the copied URL to access your function.

Vérifier la fonction dans AzureVerify the function in Azure

Pour vérifier que l’application de fonction s’exécute sur Azure à l’aide de cURL, remplacez l’URL de l’exemple ci-dessous par celle que vous avez copiée à partir du portail.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

Cela envoie une requête POST au point de terminaison de fonction avec AzureFunctions dans le corps de la requête.This sends a POST request to the function endpoint with AzureFunctions in the body of the request. Vous obtenez la réponse suivante.You see the following response.

Hello AzureFunctions!

Étapes suivantesNext steps

Vous avez créé un projet de fonctions Java avec une fonction déclenchée par HTTP, vous l’avez exécuté sur votre ordinateur local et vous l’avez déployée sur Azure.You've created a Java functions project with an HTTP triggered function, run it on your local machine, and deployed it to Azure. À présent, étendez votre fonction en effectuant un...Now, extend your function by...