Erstellen und Veröffentlichen einer Funktion für Azure mithilfe von Java und Gradle
In diesem Artikel erfahren Sie, wie Sie mit dem Gradle-Befehlszeilentool ein Java-Funktionsprojekt erstellen und für Azure Functions veröffentlichen. Der fertige Funktionscode wird dann in Azure im Rahmen eines serverlosen Hostingplans ausgeführt und durch eine HTTP-Anforderung ausgelöst.
Hinweis
Sollte Gradle nicht Ihr bevorzugtes Entwicklungstool sein, stehen ähnliche Tutorials mit Maven, IntelliJ IDEA und VS Code für Java-Entwickler zur Verfügung.
Voraussetzungen
Um Funktionen mit Java zu entwickeln, muss Folgendes installiert sein:
- Java Developer Kit, Version 8, 11, 17 oder 21. (Java 21 wird derzeit nur unter Linux in der Vorschau unterstützt)
- Azure-Befehlszeilenschnittstelle
- Azure Functions Core Tools, Version 2.6.666 oder höher
- Gradle ab Version 6.8
Außerdem benötigen Sie ein aktives Azure-Abonnement. Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.
Wichtig
Damit Sie diesen Schnellstart durchführen können, muss die Umgebungsvariable JAVA_HOME auf den Installationsspeicherort des JDK festgelegt sein.
Vorbereiten eines Functions-Projekts
Verwenden Sie den folgenden Befehl, um das Beispielprojekt zu klonen:
git clone https://github.com/Azure-Samples/azure-functions-samples-java.git
cd azure-functions-samples-java/triggers-bindings
Öffnen Sie build.gradle
, und ändern Sie den App-Namen (appName
) im folgenden Abschnitt in einen eindeutigen Namen, um Domänennamenskonflikte bei der Bereitstellung in Azure zu vermeiden.
azurefunctions {
resourceGroup = 'java-functions-group'
appName = 'azure-functions-sample-demo'
pricingTier = 'Consumption'
region = 'westus'
runtime {
os = 'windows'
}
localDebug = "transport=dt_socket,server=y,suspend=n,address=5005"
}
Öffnen Sie die neue Datei „Function.java“ unter src/main/java in einem Text-Editor, und überprüfen Sie den generierten Code. Bei diesem Code handelt es sich um eine Funktion mit HTTP-Trigger, die den Text der Anforderung zurückgibt.
Lokales Ausführen der Funktion
Führen Sie den folgenden Befehl aus, um das Funktionsprojekt zu erstellen und auszuführen:
gradle jar --info
gradle azureFunctionsRun
Wenn Sie das Projekt lokal ausführen, wird eine Ausgabe wie die folgende von Azure Functions Core Tools angezeigt:
... 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 ...
Lösen Sie die Funktion über die Befehlszeile aus. Verwenden Sie dazu den folgenden cURL-Befehl in einem neuen Terminalfenster:
curl -w "\n" http://localhost:7071/api/HttpExample --data AzureFunctions
Erwartete Ausgabe:
Hello, AzureFunctions
Hinweis
Wenn Sie authLevel auf FUNCTION
oder ADMIN
festlegen, ist der Zugriffsschlüssel bei lokaler Ausführung nicht erforderlich.
Verwenden Sie Ctrl+C
im Terminal, um den Funktionscode anzuhalten.
Bereitstellen der Funktion in Azure
Wenn Sie Ihre Funktions-App erstmals bereitstellen, werden in Azure eine Funktions-App und zugehörige Ressourcen erstellt. Vor der Bereitstellung müssen Sie sich zunächst mithilfe des Azure CLI-Befehls az login bei Ihrem Azure-Abonnement anmelden.
az login
Tipp
Falls Ihr Konto auf mehrere Abonnements zugreifen kann, verwenden Sie az account set, um das Standardabonnement für diese Sitzung festzulegen.
Verwenden Sie den folgenden Befehl, um Ihr Projekt für eine neue Funktions-App bereitzustellen.
gradle azureFunctionsDeploy
Dadurch werden die folgenden Ressourcen in Azure erstellt, basierend auf den Werten in der Datei build.gradle:
- Ressourcengruppe – benannt mit der angegebenen Ressourcengruppe (resourceGroup).
- Speicherkonto – von Functions benötigt. Der Name wird nach dem Zufallsprinzip basierend auf den Anforderungen für den Speicherkontonamen generiert.
- App Service-Plan. Serverloses Hosting mit Verbrauchsplan für Ihre Funktions-App in der angegebenen Region. Der Name wird nach dem Zufallsprinzip generiert.
- Funktions-App – die Bereitstellungs-und Ausführungseinheit für Ihre Funktionen. Der Name ist Ihr App-Name (appName) mit angefügter Zufallszahl.
Bei der Bereitstellung werden mithilfe von zip deployment auch die Projektdateien gepackt und für die neue Funktions-App bereitgestellt (mit aktiviertem Modus für die paketbasierte Ausführung).
Im Beispielprojekt ist der Wert für authLevel für HTTP-Trigger ANONYMOUS
. Dadurch wird die Authentifizierung übersprungen. Wenn Sie jedoch einen anderen Wert für authLevel verwenden, z. B. FUNCTION
oder ADMIN
, müssen Sie den Funktionsschlüssel abrufen, um den Funktionsendpunkt über HTTP aufzurufen. Den Funktionsschlüssel können Sie am einfachsten über das Azure portal abrufen.
Abrufen der URL des HTTP-Triggers
Die erforderliche URL zum Auslösen Ihrer Funktion können Sie mit dem Funktionsschlüssel im Azure-Portal abrufen.
Navigieren Sie zum Azure portal, melden Sie sich an, geben Sie im oberen Seitenbereich unter Suche den App-Namen (appName) Ihrer Funktions-App ein, und drücken Sie die EINGABETASTE.
Klicken Sie in Ihrer Funktions-App auf Funktionen, wählen Sie Ihre Funktion aus, und klicken Sie anschließend rechts oben auf Funktions-URL abrufen.
Wählen Sie default (Function key) (Standard (Funktionsschlüssel)) und anschließend Kopieren aus.
Nun können Sie mithilfe der kopierte URL auf Ihre Funktion zugreifen.
Überprüfen der Funktion in Azure
Die in Azure ausgeführte Funktions-App kann mithilfe von cURL
überprüft werden. Ersetzen Sie hierzu die URL aus dem folgenden Beispiel durch die URL, die Sie aus dem Portal kopiert haben.
curl -w "\n" http://azure-functions-sample-demo.azurewebsites.net/api/HttpExample --data AzureFunctions
Dadurch wird eine POST-Anforderung mit AzureFunctions
an den Funktionsendpunkt gesendet. Die Antwort sieht wie folgt aus:
Hello, AzureFunctions
Nächste Schritte
Sie haben ein Java-Funktionsprojekt mit einer per HTTP ausgelösten Funktion erstellt, auf Ihrem lokalen Computer ausgeführt und für Azure bereitgestellt. Erweitern Sie nun Ihre Funktion durch...