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:

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/

Ö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.

  1. 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.

  2. 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.

    Kopieren der Funktions-URL aus dem Azure-Portal

  3. 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...