Události
Vytváření inteligentních aplikací
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
V tomto článku pomocí nástrojů příkazového řádku vytvoříte funkci Java, která reaguje na požadavky HTTP. Po místním otestování kód nasadíte do bezserverového prostředí Azure Functions.
Pokud Maven není vaším upřednostňovaným vývojovým nástrojem, podívejte se na naše podobné kurzy pro vývojáře v Javě:
Při dokončení tohoto rychlého zprovoznění vzniknou ve vašem účtu Azure náklady ve výši několika centů USD (nebo menší).
Než začnete, musíte mít následující:
Účet Azure s aktivním předplatným. Vytvoření účtu zdarma
Azure CLI verze 2.4 nebo novější.
Sada Java Developer Kit verze 8, 11, 17, 21 (jenom Linux). Proměnná JAVA_HOME
prostředí musí být nastavena na umístění instalace správné verze sady JDK.
Apache Maven verze 3.0 nebo novější.
Doporučený způsob instalace nástrojů Core Tools závisí na operačním systému místního vývojového počítače.
Následující kroky používají APT k instalaci Nástrojů Core Tools do distribuce Ubuntu/Debian Linuxu. Další linuxové distribuce najdete v souboru readme core Tools.
Nainstalujte klíč GPG úložiště balíčků Společnosti Microsoft, abyste ověřili integritu balíčku:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
Před aktualizací APT nastavte zdrojový seznam APT.
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-$(lsb_release -cs 2>/dev/null)-prod $(lsb_release -cs 2>/dev/null) main" > /etc/apt/sources.list.d/dotnetdev.list'
sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/debian/$(lsb_release -rs 2>/dev/null | cut -d'.' -f 1)/prod $(lsb_release -cs 2>/dev/null) main" > /etc/apt/sources.list.d/dotnetdev.list'
/etc/apt/sources.list.d/dotnetdev.list
Zkontrolujte v souboru jeden z příslušných řetězců verze Linuxu v následující tabulce:
Linuxová distribuce | Verze |
---|---|
Debian 12 | bookworm |
Debian 11 | bullseye |
Debian 10 | buster |
Debian 9 | stretch |
Ubuntu 22.04 | jammy |
Ubuntu 20.04 | focal |
Ubuntu 19.04 | disco |
Ubuntu 18.10 | cosmic |
Ubuntu 18.04 | bionic |
Ubuntu 17.04 | zesty |
Ubuntu 16.04/Linux Mint 18 | xenial |
Spusťte aktualizaci zdroje APT:
sudo apt-get update
Nainstalujte balíček Core Tools:
sudo apt-get install azure-functions-core-tools-4
Ve službě Azure Functions je projekt funkcí kontejnerem pro jednu nebo více jednotlivých funkcí, které každá reaguje na konkrétní trigger. Všechny funkce v projektu sdílejí stejné místní a hostitelské konfigurace. 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=8
Důležité
-DjavaVersion=11
. Další informace najdete v tématu Verze Javy.JAVA_HOME
bylo možné dokončit tento článek, musí být proměnná prostředí nastavená na umístění instalace správné verze sady JDK.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:
Instrukce | Hodnota | Popis |
---|---|---|
groupId | com.fabrikam |
Hodnota, která jednoznačně identifikuje váš projekt ve všech projektech podle pravidel pojmenování balíčků pro Javu. |
artifactId | fabrikam-functions |
Hodnota, která je názvem souboru JAR bez čísla verze. |
version | 1.0-SNAPSHOT |
Zvolte výchozí hodnotu. |
balíček | com.fabrikam |
Hodnota, která je balíčkem Java pro vygenerovaný kód funkce. Použijte výchozí hodnotu. |
Potvrďte zadáním Y
nebo stisknutím klávesy Enter.
Maven vytvoří soubory projektu v nové složce s názvem artifactId, který je fabrikam-functions
v tomto příkladu .
Přejděte do složky projektu:
cd fabrikam-functions
Tato složka obsahuje různé soubory projektu, včetně konfiguračních souborů pojmenovaných local.settings.json a host.json. Protože local.settings.json může obsahovat tajné kódy stažené z Azure, soubor je ve výchozím nastavení vyloučen ze správy zdrojového kódu v souboru .gitignore .
V případě potřeby můžete funkci spustit místně a později obsah souboru prozkoumat.
Function.java obsahuje metodurun
, která přijímá data požadavku v request
proměnné je HttpRequestMessage, která je zdobena poznámkou HttpTrigger, která definuje chování triggeru.
package com.fabrikam;
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 generována rozhraním API HttpResponseMessage.Builder .
Nastavení prostředků Azure vytvořených pro hostování vaší aplikace jsou definována v konfiguračním prvku modulu plug-in se skupinou Id com.microsoft.azure
vygenerovaného souboru pom.xml. Například následující element konfigurace dává pokyn nasazení založenému na Mavenu, aby vytvořilo aplikaci funkcí ve java-functions-group
skupině prostředků v westus
oblasti. Samotná aplikace funkcí běží ve Windows hostovaných v java-functions-app-service-plan
plánu, což je ve výchozím nastavení bezserverový plán Consumption.
<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>java-functions-group</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>westus</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>
</runtime>
<appSettings>
<property>
<name>FUNCTIONS_EXTENSION_VERSION</name>
<value>~4</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, jak se prostředky vytvářejí v Azure, například změnou runtime.os
z windows
před linux
počátečním nasazením. Úplný seznam nastavení podporovaných modulem plug-in Maven najdete v podrobnostech konfigurace.
Archetyp také vygeneruje test jednotek pro vaši funkci. Když funkci změníte a přidáte do projektu vazby nebo přidáte nové funkce, budete také muset upravit testy v souboru FunctionTest.java .
Spusťte funkci spuštěním místního hostitele modulu runtime Azure Functions ze složky LocalFunctionProj :
mvn clean package
mvn azure-functions:run
Na 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 httpExample nezobrazí, jak je znázorněno výše, pravděpodobně jste hostitele spustili 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 spusťte předchozí příkaz znovu.
Zkopírujte adresu URL vaší HttpExample
funkce z tohoto výstupu do prohlížeče a připojte řetězec ?name=<YOUR_NAME>
dotazu a vytvořte úplnou adresu URL jako http://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 spustili projekt, se při provádění požadavků zobrazuje také výstup protokolu.
Až budete hotovi, pomocí kláves Ctrl+C zastavte y
hostitele funkcí.
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 definována v souboru pom.xml. 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 runtime.os
prvek v souboru pom.xml z windows
na linux
. V těchto oblastech se podporuje spouštění Linuxu v plánu Consumption. Nemůžete mít aplikace, které běží v Linuxu a aplikacích, které běží ve 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 PowerShellu.
az login
Příkaz az login vás přihlásí ke svému účtu Azure.
Pomocí následujícího příkazu nasaďte projekt do nové aplikace funkcí.
mvn azure-functions:deploy
Tím se v Azure vytvoří následující prostředky:
Nasazení zabalí soubory projektu a nasadí je do nové aplikace funkcí pomocí nasazení zip. Kód se spustí z balíčku pro nasazení v Azure.
Důležité
Účet úložiště slouží k ukládání důležitých dat aplikace, někdy včetně samotného kódu aplikace. Přístup z jiných aplikací a uživatelů byste měli omezit na účet úložiště.
Vzhledem k tomu, že vaše funkce používá trigger HTTP, vyvoláte ji tak, že v prohlížeči nebo pomocí nástroje, jako je curl, vytvoří požadavek HTTP na jeho adresu URL.
Zkopírujte úplnou adresu URL vyvolání zobrazené ve výstupu příkazu publish do adresního řádku prohlížeče a připojte parametr ?name=Functions
dotazu . Prohlížeč by měl zobrazit podobný výstup jako při místním spuštění funkce.
Spuštěním následujícího příkazu zobrazte 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 znovu volejte vzdálenou funkci. Podrobný protokol spuštění funkce v Azure se zobrazí v terminálu.
Pokud budete pokračovat k dalšímu kroku a přidáte výstupní vazbu fronty Azure Storage, ponechte všechny prostředky na místě, protože budete vycházet z toho, co jste už udělali.
Jinak pomocí následujícího příkazu odstraňte skupinu prostředků a všechny její obsažené prostředky, abyste se vyhnuli dalším nákladům.
az group delete --name java-functions-group
Události
Vytváření inteligentních aplikací
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatŠkolení
Modul
Nasazení jednoduché webové aplikace v Javě do služby Aplikace Azure - Training
Zjistěte, jak vytvořit webovou aplikaci v Javě a nasadit ji do služby Aplikace Azure Service.
Certifikace
Microsoft Certifikát: Azure Vývojářský Asistent - Certifications
Vytvářejte ucelená řešení v Microsoft Azure pro vytváření funkcí Azure, implementaci a správu webových aplikací, vývoj řešení využívajících úložiště Azure a další.
Dokumentace
Vytvoření funkce Java pomocí editoru Visual Studio Code – Azure Functions
Zjistěte, jak vytvořit funkci Java a pak publikovat místní projekt do bezserverového hostování ve službě Azure Functions pomocí rozšíření Azure Functions v editoru Visual Studio Code.
Referenční informace pro vývojáře v Javě pro Azure Functions
Zjistěte, jak vyvíjet funkce pomocí Javy.
Vytvoření aplikace funkcí Azure pomocí Javy a Eclipse
Průvodce vytvořením a publikováním jednoduché bezserverové aplikace aktivované protokolem HTTP pomocí Javy a Eclipse do Azure Functions