Rychlý start: Vytvoření funkce Java v Azure z příkazového řádku
V tomto článku použijete nástroje příkazového řádku k vytvoření funkce Java, která reaguje na požadavky HTTP. Po místním otestování kódu ho nasadíte do prostředí bez serveru Azure Functions.
Pokud Maven není upřednostňovaný vývojářský nástroj, podívejte se na naše podobné kurzy pro vývojáře v Javě:
Za dokončení tohoto rychlého startu se ve vašem účtu Azure účtu Azure účtu vynačítá náklady na pár centů USD nebo méně.
Konfigurace místního prostředí
Než začnete, musíte mít následující:
Účet Azure s aktivním předplatným. Vytvořte si účet zdarma.
Verze Azure Functions Core Tools 4.x.
Azure CLI verze 2.4 nebo novější.
Sada Java Developer Kitverze 8 nebo 11. Proměnná prostředí musí být nastavená na umístění
JAVA_HOMEinstalace správné verze sady JDK.Apache Mavenverze 3.0 nebo novější.
Kontrola předpokladů
V terminálu nebo v příkazovém okně spusťte a
func --versionzkontrolujte, že Azure Functions Core Tools verze 4.x.Spusťte
az --versiona zkontrolujte, že azure CLI má verzi 2.4 nebo novější.Spuštěním
az loginse přihlaste k Azure a ověřte aktivní předplatné.
Vytvoření projektu místní funkce
V Azure Functions je projekt funkce kontejner pro jednu nebo více jednotlivých funkcí, které každá reaguje na konkrétní aktivační událost. Všechny funkce v projektu sdílejí stejnou místní konfiguraci a konfiguraci hostování. V této části vytvoříte projekt funkce, který obsahuje jednu funkci.
Spuštěním následujícího příkazu v prázdné složce vygenerujte projekt Functions z archetypu Maven.
mvn archetype:generate -DarchetypeGroupId=com.microsoft.azure -DarchetypeArtifactId=azure-functions-archetype -DjavaVersion=8Důležité
- Pokud chcete funkce spouštět ve verzi Java 11, použijte
-DjavaVersion=11. Další informace najdete v tématu Verze Javy. - Aby bylo možné dokončit tento článek, proměnná prostředí musí být nastavená na umístění instalace správné verze
JAVA_HOMEsady JDK.
- Pokud chcete funkce spouštět ve verzi Java 11, použijte
Maven vás požádá o hodnoty potřebné k dokončení generování projektu při nasazení.
Po zobrazení výzvy zadejte následující hodnoty:Výzva Hodnota Popis groupId com.fabrikamHodnota, která jedinečně identifikuje váš projekt ve všech projektech podle pravidel pojmenování balíčků pro Javu. artifactId (ID artefaktu) fabrikam-functionsHodnota, která je název souboru jar bez čísla verze. Verze 1.0-SNAPSHOTZvolte výchozí hodnotu. Balíček com.fabrikamHodnota, která je balíček Java pro vygenerovaný kód funkce. Použijte výchozí hodnotu. Potvrďte
Yto zadáním nebo stisknutím klávesy Enter.Maven vytvoří soubory projektu v nové složce s názvem artifactId, což je v tomto příkladu
fabrikam-functions.Přejděte do složky projektu:
cd fabrikam-functionsTato složka obsahuje různé soubory pro projekt, včetně konfiguračních souborů s názvem local.settings.json a host.json. Vzhledem k tomu, že soubor local.settings.json může obsahovat tajné kódy stažené z Azure, je soubor v souboru .gitignore ve výchozím nastavení vyloučený ze správy zdrojového kódu.
(Volitelné) Prozkoumání obsahu souboru
V případě potřeby můžete přeskočit na Možnost Spustit funkci místně a prozkoumat obsah souboru později.
Function.java
Soubor Function.java obsahuje metodu, která přijímá data požadavku v proměnné , je httprequestmessage, která je dekorovaná poznámkou run request HttpTrigger, která definuje chování triggeru.
/**
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for
* license information.
*/
package com.functions;
import com.microsoft.azure.functions.ExecutionContext;
import com.microsoft.azure.functions.HttpMethod;
import com.microsoft.azure.functions.HttpRequestMessage;
import com.microsoft.azure.functions.HttpResponseMessage;
import com.microsoft.azure.functions.HttpStatus;
import com.microsoft.azure.functions.annotation.AuthorizationLevel;
import com.microsoft.azure.functions.annotation.FunctionName;
import com.microsoft.azure.functions.annotation.HttpTrigger;
import java.util.Optional;
/**
* Azure Functions with HTTP Trigger.
*/
public class Function {
/**
* This function listens at endpoint "/api/HttpExample". Two ways to invoke it using "curl" command in bash:
* 1. curl -d "HTTP Body" {your host}/api/HttpExample
* 2. curl "{your host}/api/HttpExample?name=HTTP%20Query"
*/
@FunctionName("HttpExample")
public HttpResponseMessage run(
@HttpTrigger(
name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
context.getLogger().info("Java HTTP trigger processed a request.");
// Parse query parameter
final String query = request.getQueryParameters().get("name");
final 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();
}
}
}
Zpráva odpovědi je vygenerována rozhraním API HttpResponseMessage.Builder.
pom.xml
Nastavení prostředků Azure vytvořených pro hostování vaší aplikace jsou definované v elementu konfigurace modulu plug-in s groupId ve vygenerované com.microsoft.azure pom.xml souboru. Například následující element konfigurace instruuje nasazení založené na Mavenu, aby vytvořilo aplikaci funkcí ve skupině prostředků java-functions-group v westus oblasti. Samotná aplikace funkcí běží na Windows v plánu, což je ve výchozím nastavení java-functions-app-service-plan plán Consumption bez serveru.
<plugin>
<groupId>com.microsoft.azure</groupId>
<artifactId>azure-functions-maven-plugin</artifactId>
<version>${azure.functions.maven.plugin.version}</version>
<configuration>
<!-- function app name -->
<appName>${functionAppName}</appName>
<!-- function app resource group -->
<resourceGroup>${functionResourceGroup}</resourceGroup>
<!-- function app service plan name -->
<appServicePlanName>java-functions-app-service-plan</appServicePlanName>
<!-- function app region-->
<!-- refers https://github.com/microsoft/azure-maven-plugins/wiki/Azure-Functions:-Configuration-Details#supported-regions for all valid values -->
<region>${functionAppRegion}</region>
<!-- function pricingTier, default to be consumption if not specified -->
<!-- refers https://github.com/microsoft/azure-maven-plugins/wiki/Azure-Functions:-Configuration-Details#supported-pricing-tiers for all valid values -->
<!-- <pricingTier></pricingTier> -->
<!-- Whether to disable application insights, default is false -->
<!-- refers https://github.com/microsoft/azure-maven-plugins/wiki/Azure-Functions:-Configuration-Details for all valid configurations for application insights-->
<!-- <disableAppInsights></disableAppInsights> -->
<runtime>
<!-- runtime os, could be windows, linux or docker-->
<os>windows</os>
<javaVersion>8</javaVersion>
<!-- for docker function, please set the following parameters -->
<!-- <image>[hub-user/]repo-name[:tag]</image> -->
<!-- <serverId></serverId> -->
<!-- <registryUrl></registryUrl> -->
</runtime>
<appSettings>
<property>
<name>FUNCTIONS_EXTENSION_VERSION</name>
<value>~3</value>
</property>
</appSettings>
</configuration>
<executions>
<execution>
<id>package-functions</id>
<goals>
<goal>package</goal>
</goals>
</execution>
</executions>
</plugin>
Tato nastavení můžete změnit, abyste mohli řídit způsob vytváření prostředků v Azure, například změnou runtime.os z windows na před linux počátečním nasazením. Úplný seznam nastavení podporovaných plug-inem Maven najdete v podrobnostech o konfiguraci.
FunctionTest.java
Archetyp také vygeneruje test jednotek pro vaši funkci. Když funkci změníte tak, aby se do projektu přidávají vazby nebo aby se do projektu přidávají nové funkce, budete také muset upravit testy v souboru FunctionTest.java.
Místní spuštění funkce
Spusťte funkci spuštěním místního hostitele Azure Functions runtime ze složky LocalFunctionProj:
mvn clean package mvn azure-functions:runNa konci výstupu by se měly zobrazit následující řádky:
... 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 ...Poznámka
Pokud se příklad HttpExample nezobrazí, jak je znázorněno výše, pravděpodobně jste hostitele s zahájili mimo kořenovou složku projektu. V takovém případě pomocí Ctrl C zastavte hostitele, přejděte do kořenové složky projektu a + znovu spusťte předchozí příkaz.
Zkopírujte adresu URL vaší funkce z tohoto výstupu do prohlížeče a připojte řetězec dotazu
HttpExample?name=<YOUR_NAME>, aby byla úplná adresa URL, napříkladhttp://localhost:7071/api/HttpExample?name=Functions. Prohlížeč by měl zobrazit zprávu, která vrací hodnotu řetězce dotazu. V terminálu, ve kterém jste s projektem začali, se při žádostech zobrazuje také výstup protokolu.Až budete hotovi, stiskněte Ctrl C a + zastavte
yhostitele funkcí.
Nasazení projektu funkce do Azure
Aplikace funkcí a související prostředky se vytvoří v Azure při prvním nasazení projektu funkcí. Nastavení prostředků Azure vytvořených pro hostování vaší aplikace jsou definované vpom.xml souboru. V tomto článku přijmete výchozí hodnoty.
Tip
Pokud chcete vytvořit aplikaci funkcí spuštěnou v Linuxu místo Windows, změňte element v souboru runtime.os pom.xml z windows na linux . Spuštění Linuxu v plánu Consumption se podporuje v těchto oblastech. Nemůžete mít aplikace, které běží v Linuxu, a aplikace, které běží Windows ve stejné skupině prostředků.
Před nasazením se přihlaste ke svému předplatnému Azure pomocí Azure CLI nebo Azure PowerShell.
az loginPříkaz az login vás přihlásí k vašemu účtu Azure.
Pomocí následujícího příkazu nasaďte projekt do nové aplikace funkcí.
mvn azure-functions:deployTím se v Azure vytvoří následující prostředky:
- Skupina prostředků. Má název java-functions-group.
- Storage účtu. Vyžadované funkcí. Název se generuje náhodně na základě Storage požadavků na název účtu.
- Plán hostování. Hostování bez serveru pro vaši aplikaci funkcí v oblasti westus Název je java-functions-app-service-plan.
- Aplikace funkcí. Aplikace funkcí je jednotka nasazení a spuštění vašich funkcí. Název se náhodně generuje na základě vašeho artifactId a připojuje se k náhodně vygenerovanému číslu.
Nasazení zabalí soubory projektu a nasadí je do nové aplikace Function App pomocí nasazení zip. Kód se spouští z balíčku pro nasazení v Azure.
Vyvolání funkce v Azure
Vzhledem k tomu, že funkce používá Trigger HTTP, vyvoláte ji pomocí požadavku HTTP na adresu URL v prohlížeči nebo pomocí nástroje, jako je například kudrlinkou.
Zkopírujte úplnou adresu URL pro vyvolání zobrazenou ve výstupu příkazu publikovat do adresního řádku prohlížeče a přidejte parametr dotazu &name=Functions . V prohlížeči by se měl zobrazit podobný výstup jako při spuštění funkce místně.

Spuštěním následujícího příkazu zobrazíte protokoly streamovánítéměř v reálném čase:
func azure functionapp logstream <APP_NAME>
V samostatném okně terminálu nebo v prohlížeči zavolejte vzdálenou funkci znovu. Podrobný protokol provádění funkce v Azure je zobrazený v terminálu.
Vyčištění prostředků
pokud budete pokračovat k dalšímu kroku a přidáte výstupní vazbu fronty Azure Storage, zachovejte všechny prostředky na místě, jak budete vytvářet informace o tom, co jste už provedli.
Jinak pomocí následujícího příkazu odstraňte skupinu prostředků a všechny její obsažené prostředky, abyste se vyhnuli vzniku dalších nákladů.
az group delete --name java-functions-group
