Gyors útmutató: A Java használatával hozzon létre és tegyen közzé egy függvényt Azure FunctionsQuickstart: Use Java to create and publish a function to Azure Functions

Ebből a cikkből megtudhatja, hogyan hozhat létre és tehet közzé Java-függvényeket az Azure functions szolgáltatásban a Maven parancssori eszközzel.This article instructs you how to build and publish a Java function to Azure functions with the Maven command-line tool. Ha elkészült, a függvény kódja az Azure-beli felhasználási terven fut, és HTTP-kérelem használatával indítható el.When you're done, your function code runs on the Consumption Plan in Azure and can be triggered using an HTTP request.

Ha nem rendelkezik Azure-előfizetéssel, a Kezdés előtt hozzon létre egy ingyenes fiókot .If you don't have an Azure subscription, create a free account before you begin.

ElőfeltételekPrerequisites

A Java-t használó függvények fejlesztéséhez a következőkre van szükség:To develop functions using Java, you must have the following installed:

Fontos

A rövid útmutató befejezéséhez a JAVA_HOME környezeti változót a JDK telepítési helyére kell beállítani.The JAVA_HOME environment variable must be set to the install location of the JDK to complete this quickstart.

Új Functions-projekt létrehozásaGenerate a new Functions project

Egy üres mappában futtassa a következő parancsot a Functions-projekt Maven archetype-ból való létrehozásához.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 

Megjegyzés

Ha a parancs futtatásával kapcsolatos problémákat tapasztal, tekintse meg, hogy milyen maven-archetype-plugin verziót használ.If you're experiencing issues with running the command, take a look at what maven-archetype-plugin version is used. Mivel a parancsot egy üres, fájl nélküli .pom könyvtárban futtatja, előfordulhat, hogy a régebbi ~/.m2/repository/org/apache/maven/plugins/maven-archetype-plugin verzió beépülő modulját próbálja használni, ha a mavent egy régebbi verzióról frissítette.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. Ha igen, próbálja meg törölni maven-archetype-plugin a könyvtárat, és futtassa újra a parancsot.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"

A Maven kérni fogja a projekt létrehozásához szükséges értékeket.Maven will ask you for values needed to finish generating the project. A groupId, artifactId és version értékek a Maven elnevezési konvenciókra vonatkozó referenciákban találhatók.For groupId, artifactId, and version values, see the Maven naming conventions reference. Az appName értékének egyedinek kell lennie az Azure-ban, ezért a Maven alapértelmezés szerint az előzőleg megadott artifactId érték alapján létrehoz egy alkalmazásnevet.The appName value must be unique across Azure, so Maven generates an app name based on the previously entered artifactId as a default. A packageName érték meghatározza a Java-csomagot a létrehozott függvénykódhoz.The packageName value determines the Java package for the generated function code.

Az alábbi com.fabrikam.functions és fabrikam-functions azonosítók példaként szolgálnak, és könnyebben átláthatóvá teszik a rövid útmutató későbbi lépéseit.The com.fabrikam.functions and fabrikam-functions identifiers below are used as an example and to make later steps in this quickstart easier to read. Javasoljuk, hogy adja meg a saját értékekeit a Mavennek ebben a lépésben.You are encouraged to supply your own values to Maven in this step.

Define value for property 'groupId' (should match expression '[A-Za-z0-9_\-\.]+'): com.fabrikam.functions
Define value for property 'artifactId' (should match expression '[A-Za-z0-9_\-\.]+'): fabrikam-functions
Define value for property 'version' 1.0-SNAPSHOT : 
Define value for property 'package': com.fabrikam.functions
Define value for property 'appName' fabrikam-functions-20170927220323382:
Define value for property 'appRegion' westus: :
Define value for property 'resourceGroup' java-functions-group: :
Confirm properties configuration: Y

A Maven az artifactId nevét viselő új mappában hozza létre a projektfájlokat, amely ebben a példában fabrikam-functions.Maven creates the project files in a new folder with a name of artifactId, in this example fabrikam-functions. A készen áll a generált kód futtatására a projektben egy http által aktivált függvény, amely megismétli a kérelem törzsét.The ready to run generated code in the project is an HTTP triggered function that echoes the body of the request. Cserélje le a src/Main/Java/com/Fabrikam/functions/function. Java kódot a következő kódra:Replace src/main/java/com/fabrikam/functions/Function.java with the following code:

package com.fabrikam.functions;

import java.util.*;
import com.microsoft.azure.functions.annotation.*;
import com.microsoft.azure.functions.*;

public class Function {
    /**
     * This function listens at endpoint "/api/HttpTrigger-Java". Two ways to invoke it using "curl" command in bash:
     * 1. curl -d "HTTP Body" {your host}/api/HttpTrigger-Java
     * 2. curl {your host}/api/HttpTrigger-Java?name=HTTP%20Query
     */
    @FunctionName("HttpTrigger-Java")
    public HttpResponseMessage run(
            @HttpTrigger(name = "req", methods = { HttpMethod.GET, HttpMethod.POST }, authLevel = AuthorizationLevel.FUNCTION) HttpRequestMessage<Optional<String>> request,
            final ExecutionContext context) {
        context.getLogger().info("Java HTTP trigger processed a request.");

        // Parse query parameter
        String query = request.getQueryParameters().get("name");
        String name = request.getBody().orElse(query);

        if (name == null) {
            return request.createResponseBuilder(HttpStatus.BAD_REQUEST).body("Please pass a name on the query string or in the request body").build();
        } else {
            return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();
        }
    }
}

Bővítmény-csomagok engedélyezéseEnable extension bundles

A kötési bővítmények telepítésének legegyszerűbb módja a bővítmény-csomagokengedélyezése.The easiest way to install binding extensions is to enable extension bundles. Ha engedélyezi a csomagokat, a rendszer automatikusan telepíti a bővítmények előre meghatározott készletét.When you enable bundles, a predefined set of extension packages is automatically installed.

A bővítmények engedélyezéséhez nyissa meg a Host. JSON fájlt, és frissítse annak tartalmát, hogy az megfeleljen a következő kódnak:To enable extension bundles, open the host.json file and update its contents to match the following code:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[1.*, 2.0.0)"
    }
}

Függvény helyi futtatásaRun the function locally

Módosítsa a könyvtárat az újonnan létrehozott projekt mappájába (amely a Host. JSON és a Pom. xml fájlokat tartalmazza), és hozza létre és futtassa a függvényt a Maven használatával:Change directory to the newly created project folder (the one containing your host.json and pom.xml files) and build and run the function with Maven:

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

Megjegyzés

Ha Java 9 használata esetén a javax.xml.bind.JAXBException kivételt észleli, tekintse meg a megkerülő megoldást a GitHubon.If you're experiencing this exception: javax.xml.bind.JAXBException with Java 9, see the workaround on GitHub.

Ha a függvény helyben, az Ön rendszerén fut, és készen áll a HTTP-kérelmekre való válaszadásra, a következő kimenet látható:You see this output when the function is running locally on your system and ready to respond to HTTP requests:

Listening on http://localhost:7071
Hit CTRL-C to exit...

Http Functions:

   hello: http://localhost:7071/api/HttpTrigger-Java

Aktiválja a függvényt a parancssorból egy új terminálablakban a curl használatával:Trigger the function from the command line using curl in a new terminal window:

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

A Ctrl-C billentyűparanccsal állítsa le a függvénykódot a terminálablakban.Use Ctrl-C in the terminal to stop the function code.

A függvény üzembe helyezése az Azure-banDeploy the function to Azure

Az Azure Functions üzembehelyezési folyamata az Azure parancssori felületről származó fiókhitelesítő-adatokat használja.The deploy process to Azure Functions uses account credentials from the Azure CLI. A folytatás előtt jelentkezzen be az Azure CLI-vel .Sign in with the Azure CLI before continuing.

az login

Helyezze üzembe a kódot egy új függvényalkalmazásban az azure-functions:deploy Maven-cél használatával.Deploy your code into a new Function app using the azure-functions:deploy Maven target. Ez egy olyan zip-telepítést hajt végre, amelyen engedélyezve van a csomag mód futtatása.This performs a Zip Deploy with Run From Package mode enabled.

Megjegyzés

Ha Visual Studio Code-ot használ a Function alkalmazás üzembe helyezéséhez, ne felejtsen el nem ingyenes előfizetést választani, vagy hibaüzenetet kap.When you use Visual Studio Code to deploy your Function app, remember to choose a non-free subscription, or you will get an error. Az előfizetést az IDE oldal bal oldalán tekintheti meg.You can watch your subscription on the left side of the IDE.

mvn azure-functions:deploy

Az üzembe helyezés végén megjelenik az URL-cím, amellyel bejelentkezhet az Azure-függvényalkalmazásba:When the deploy is complete, you see the URL you can use to access your Azure function app:

[INFO] Successfully deployed Function App with package.
[INFO] Deleting deployment package from Azure Storage...
[INFO] Successfully deleted deployment package fabrikam-function-20170920120101928.20170920143621915.zip
[INFO] Successfully deployed Function App at https://fabrikam-function-20170920120101928.azurewebsites.net
[INFO] ------------------------------------------------------------------------

Tesztelje az Azure-ban futó függvényalkalmazást a cURL használatával.Test the function app running on Azure using cURL. Az alábbi mintában található URL-címet módosítsa az előző lépésben üzembe helyezett saját függvényalkalmazása címére.You'll need to change the URL from the sample below to match the deployed URL for your own function app from the previous step.

Megjegyzés

Győződjön meg arról, hogy a hozzáférési jogosultságokat a Anonymouskövetkezőre állítja be:.Make sure you set the Access rights to Anonymous. Ha az alapértelmezett szintet Functionválasztja, akkor a függvény-végpont eléréséhez a kérelmekben be kell mutatnia a függvény kulcsát .When you choose the default level of Function, you are required to present the function key in requests to access your function endpoint.

curl -w "\n" https://fabrikam-function-20170920120101928.azurewebsites.net/api/HttpTrigger-Java -d AzureFunctions
Hello AzureFunctions!

Módosítások elvégzése és ismételt üzembe helyezésMake changes and redeploy

Szerkessze a létrehozott projektben az src/main.../Function.java forrásfájlt a függvényalkalmazás által visszaadott szöveg módosításához.Edit the src/main.../Function.java source file in the generated project to alter the text returned by your Function app. Módosítsa ezt a sort:Change this line:

return request.createResponseBuilder(HttpStatus.OK).body("Hello, " + name).build();

A következőre:To the following:

return request.createResponseBuilder(HttpStatus.OK).body("Hi, " + name).build();

Mentse a módosításokat.Save the changes. Futtassa a MVN tiszta csomagot, és végezze azure-functions:deploy el az újbóli üzembe helyezést a terminálról a korábban lefuttatva.Run mvn clean package and redeploy by running azure-functions:deploy from the terminal as before. A függvényalkalmazás frissül, és ez a kérés:The function app will be updated and this request:

curl -w '\n' -d AzureFunctionsTest https://fabrikam-functions-20170920120101928.azurewebsites.net/api/HttpTrigger-Java

Frissített kimenettel rendelkezik:Will have updated output:

Hi, AzureFunctionsTest

További lépésekNext steps

Létrehozott egy Java-függvényalkalmazást egy egyszerű HTTP-triggerrel, és üzembe helyezte azt az Azure Functionsben.You have created a Java function app with a simple HTTP trigger and deployed it to Azure Functions.

  • Ha további információra van szüksége a Java-függvények létrehozásával kapcsolatban, tekintse át a Java-függvények fejlesztői útmutatóját.Review the Java Functions developer guide for more information on developing Java functions.
  • Adjon hozzá különböző triggereket használó további funkciókat a projekthez az azure-functions:add Maven-cél használatával.Add additional functions with different triggers to your project using the azure-functions:add Maven target.
  • Helyileg írjon függvényeket, és végezze el azok hibakeresését a Visual Studio Code, az IntelliJ és az Eclipse használatával.Write and debug functions locally with Visual Studio Code, IntelliJ, and Eclipse.
  • Végezze el az Azure-ban üzembe helyezett függvények hibakeresését a Visual Studio Code-dal.Debug functions deployed in Azure with Visual Studio Code. Utasításokért tekintse meg a Visual Studio Code kiszolgáló nélküli Java-alkalmazásokat ismertető dokumentációját.See the Visual Studio Code serverless Java applications documentation for instructions.