Erstellen Ihrer ersten dauerhaften Funktion in PowerShell

Durable Functions ist eine Erweiterung von Azure Functions, mit der Sie zustandsbehaftete Funktionen in einer serverlosen Umgebung schreiben können. Die Erweiterung verwaltet Status, Prüfpunkte und Neustarts für Sie.

In diesem Artikel erfahren Sie, wie Sie die Azure Functions-Erweiterung von Visual Studio Code verwenden, um lokal eine dauerhafte Funktion namens „hello world“ zu erstellen und zu testen. Mit dieser Funktion werden Aufrufe anderer Funktionen orchestriert und miteinander verkettet. Anschließend veröffentlichen Sie den Funktionscode in Azure.

Ausführen einer dauerhaften Funktion in Azure

Voraussetzungen

Für dieses Tutorial benötigen Sie Folgendes:

Sollten Sie über kein Azure-Abonnement verfügen, können Sie zunächst ein kostenloses Azure-Konto erstellen.

Erstellen Ihres lokalen Projekts

In diesem Abschnitt wird mithilfe von Visual Studio Code ein lokales Azure Functions-Projekt erstellt.

  1. Drücken Sie in Visual Studio Code F1 (oder STRG+UMSCHALT+P bzw. BEFEHL+UMSCHALT-P), um die Befehlspalette zu öffnen. Suchen Sie in der Befehlspalette den Befehl Azure Functions: Create New Project..., und wählen Sie ihn aus.

    Erstellen einer Funktion

  2. Wählen Sie einen leeren Ordner für Ihr Projekt und anschließend Auswählen aus.

  3. Geben Sie gemäß der Eingabeaufforderungen die folgenden Informationen ein:

    Prompt Wert BESCHREIBUNG
    Auswählen einer Sprache für Ihr Funktions-App-Projekt PowerShell Erstellen Sie ein lokales PowerShell-Functions-Projekt.
    „Select a version“ (Wählen Sie eine Version aus.) Azure Functions v4 Diese Option wird nur angezeigt, wenn die Core Tools noch nicht installiert sind. In diesem Fall werden die Core Tools beim erstmaligen Ausführen der App installiert.
    Auswählen einer Vorlage für die erste Funktion Ihres Projekts Vorerst überspringen
    Auswählen, wie Sie Ihr Projekt öffnen möchten Im aktuellen Fenster Öffnet VS Code wieder im ausgewählten Ordner.

Von Visual Studio Code werden bei Bedarf die Azure Functions Core Tools installiert. Außerdem wird ein Funktions-App-Projekt in einem Ordner erstellt. Dieses Projekt enthält die Konfigurationsdateien host.json und local.settings.json.

Und es wird die Datei „package.json“ im Stammordner erstellt.

Konfigurieren der Funktions-App für die Verwendung von PowerShell 7

Öffnen Sie die Datei local.settings.json, und überprüfen Sie, ob die Einstellung FUNCTIONS_WORKER_RUNTIME_VERSION auf ~7 festgelegt ist. Wenn sie fehlt oder auf einen anderen Wert festgelegt ist, aktualisieren Sie den Inhalt der Datei.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "powershell",
    "FUNCTIONS_WORKER_RUNTIME_VERSION" : "~7"
  }
}

Erstellen Ihrer Funktionen

Die einfachste Durable Functions-App enthält drei Funktionen:

  • Orchestratorfunktion: Beschreibt einen Workflow, der andere Funktionen orchestriert.
  • Aktivitätsfunktion: Wird von der Orchestratorfunktion aufgerufen, führt die Aufgabe aus und gibt optional einen Wert zurück.
  • Clientfunktion: Eine reguläre Azure-Funktion, die eine Orchestratorfunktion startet. In diesem Beispiel wird eine per HTTP ausgelöste Funktion verwendet.

Orchestratorfunktion

Sie verwenden eine Vorlage, um den Code Ihrer dauerhaften Funktion in Ihrem Projekt zu erstellen.

  1. Suchen Sie in der Befehlspalette den Befehl Azure Functions: Create Function..., und wählen Sie ihn aus.

  2. Geben Sie gemäß der Eingabeaufforderungen die folgenden Informationen ein:

    Prompt Wert BESCHREIBUNG
    „Select a template for your function“ (Wählen Sie eine Vorlage für Ihre Funktion aus.) Orchestrator für Durable Functions Erstellen Sie eine Orchestrierung für Durable Functions.
    Angeben eines Funktionsnamens HelloOrchestrator Der Name Ihrer dauerhaften Funktion.

Sie haben einen Orchestrator für die Koordinierung von Aktivitätsfunktionen hinzugefügt. Öffnen Sie HelloOrchestrator/run.ps1, um die Orchestratorfunktion anzuzeigen. Mit jedem Aufruf des Cmdlets Invoke-ActivityFunction wird eine Aktivitätsfunktion namens Hello aufgerufen.

Fügen Sie als Nächstes die referenzierte Aktivitätsfunktion Hello hinzu.

Aktivitätsfunktion

  1. Suchen Sie in der Befehlspalette den Befehl Azure Functions: Create Function..., und wählen Sie ihn aus.

  2. Geben Sie gemäß der Eingabeaufforderungen die folgenden Informationen ein:

    Prompt Wert BESCHREIBUNG
    „Select a template for your function“ (Wählen Sie eine Vorlage für Ihre Funktion aus.) Aktivität für Durable Functions Erstellen Sie eine Aktivitätsfunktion.
    Angeben eines Funktionsnamens Hallo Der Name Ihrer Aktivitätsfunktion.

Sie haben die Aktivitätsfunktion Hello hinzugefügt, die vom Orchestrator aufgerufen wird. Öffnen Sie Hello/run.ps1, um zu überprüfen, ob sie einen Namen als Eingabe akzeptiert und eine Begrüßung zurückgibt. Eine Aktivitätsfunktion dient zum Ausführen von Aktionen wie Datenbankaufrufen oder Berechnungen.

Abschließend fügen Sie noch eine per HTTP ausgelöste Funktion hinzu, durch die die Orchestrierung gestartet wird.

Clientfunktion (HTTP-Starter)

  1. Suchen Sie in der Befehlspalette den Befehl Azure Functions: Create Function..., und wählen Sie ihn aus.

  2. Geben Sie gemäß der Eingabeaufforderungen die folgenden Informationen ein:

    Prompt Wert BESCHREIBUNG
    „Select a template for your function“ (Wählen Sie eine Vorlage für Ihre Funktion aus.) HTTP-Starter für Durable Functions Erstellen Sie eine HTTP-Startfunktion.
    Angeben eines Funktionsnamens HttpStart Der Name Ihrer Aktivitätsfunktion.
    Autorisierungsstufe Anonym Lassen Sie zu Demonstrationszwecken das Aufrufen der Funktion ohne Authentifizierung zu.

Sie haben eine per HTTP ausgelöste Funktion hinzugefügt, durch die eine Orchestrierung gestartet wird. Öffnen Sie HttpStart/run.ps1. Sie sehen, dass das Cmdlet Start-NewOrchestration zum Starten einer neuen Orchestrierung verwendet wird. Anschließend wird mit dem Cmdlet New-OrchestrationCheckStatusResponse eine HTTP-Antwort mit URLs zurückgegeben, die zum Überwachen und Verwalten der neuen Orchestrierung verwendet werden können.

Sie verfügen nun über eine Durable Functions-App, die lokal ausgeführt und in Azure bereitgestellt werden kann.

Hinweis

Die nächste Version der DF PowerShell ist jetzt als Vorschauversion verfügbar und kann aus dem PowerShell-Katalog heruntergeladen werden. Erfahren Sie mehr darüber im Leitfaden zum eigenständigen Durable Functions PowerShell SDK. Im Installationsabschnitt des Leitfadens finden Sie Anweisungen zur Aktivierung, die mit dieser Schnellstartanleitung kompatibel sind.

Lokales Testen der Funktion

Mit Azure Functions Core-Tools können Sie ein Azure Functions-Projekt auf dem lokalen Entwicklungscomputer ausführen. Sie werden beim ersten Starten einer Funktions-App in Visual Studio Code zum Installieren dieser Tools aufgefordert.

  1. Legen Sie zum Testen der Funktion einen Breakpoint im Code der Aktivitätsfunktion Hello (Hello/run.ps1) fest. Drücken Sie F5, oder wählen Sie über die Befehlspalette den Befehl Debug: Start Debugging aus, um das Funktions-App-Projekt zu starten. Die Ausgabe der Core Tools wird im Bereich Terminal angezeigt.

    Hinweis

    Weitere Informationen zum Debuggen finden Sie unter Diagnose in Durable Functions in Azure.

  2. Zum Ausführen von Durable Functions ist ein Azure-Speicherkonto erforderlich. Wenn Sie von VS Code zum Auswählen eines Speicherkontos aufgefordert werden, wählen Sie Speicherkonto auswählen aus.

    Speicherkonto erstellen

  3. Geben Sie bei den Eingabeaufforderungen die folgenden Informationen an, um ein neues Speicherkonto in Azure zu erstellen:

    Prompt Wert BESCHREIBUNG
    Auswählen des Abonnements Name Ihres Abonnements Auswählen des Azure-Abonnements
    Auswählen eines Speicherkontos Erstellen eines neuen Speicherkontos
    „Enter the name of the new storage account“ (Geben Sie den Namen des neuen Speicherkontos ein.) Eindeutiger Name Der Name des zu erstellenden Speicherkontos.
    Auswählen einer Ressourcengruppe Eindeutiger Name Der Name der zu erstellenden Ressourcengruppe.
    Standort auswählen Region Wählen Sie eine Region in Ihrer Nähe aus.
  4. Kopieren Sie im Bereich Terminal den URL-Endpunkt Ihrer über HTTP ausgelösten Funktion.

    Lokale Azure-Ausgabe

  5. Senden Sie mit Ihrem Browser oder einem Tool wie Postman oder cURL eine HTTP-POST-Anforderung an den URL-Endpunkt. Ersetzen Sie das letzte Segment durch den Namen der Orchestratorfunktion (HelloOrchestrator). Die URL sollte in etwa wie folgt lauten: http://localhost:7071/api/orchestrators/HelloOrchestrator.

    Die Antwort ist das erste Ergebnis der HTTP-Funktion, um mitzuteilen, dass die dauerhafte Orchestrierung erfolgreich gestartet wurde. Es ist noch nicht das Endergebnis der Orchestrierung. Die Antwort enthält einige nützliche URLs. Zunächst fragen wir den Status der Orchestrierung ab.

  6. Kopieren Sie den URL-Wert für statusQueryGetUri, fügen Sie ihn in die Adressleiste des Browsers ein, und führen Sie anschließend die Anforderung aus. Alternativ können Sie auch weiter Postman verwenden, um die GET-Anforderung auszuführen.

    Mit der Anforderung wird für die Orchestrierungsinstanz der Status abgefragt. Sie sollten schließlich eine Antwort erhalten, die zeigt, dass die Instanz abgeschlossen wurde, und die die Ausgaben oder Ergebnisse der dauerhaften Funktion enthält. Er sieht wie folgt aus:

    {
        "name": "HelloOrchestrator",
        "instanceId": "9a528a9e926f4b46b7d3deaa134b7e8a",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
            "Hello Tokyo!",
            "Hello Seattle!",
            "Hello London!"
        ],
        "createdTime": "2020-03-18T21:54:49Z",
        "lastUpdatedTime": "2020-03-18T21:54:54Z"
    }
    
  7. Drücken Sie in VS CodeUMSCHALT+F5, um das Debuggen zu beenden.

Nachdem Sie sichergestellt haben, dass die Funktion auf Ihrem lokalen Computer richtig ausgeführt wird, können Sie das Projekt in Azure veröffentlichen.

Anmelden bei Azure

Bevor Sie Azure-Ressourcen erstellen oder Ihre App veröffentlichen können, müssen Sie sich bei Azure anmelden.

  1. Sollten Sie noch nicht angemeldet sein, wählen Sie auf der Aktivitätsleiste das Azure-Symbol aus. Wählen Sie dann im Bereich Ressourcen die Option Bei Azure anmelden... aus.

    Screenshot: das Fenster für die Anmeldung bei Azure in VS Code.

    Wenn Sie bereits angemeldet sind und Ihre vorhandenen Abonnements anzeigen können, fahren Sie mit dem nächsten Abschnitt fort. Wenn Sie noch kein Azure-Konto haben, wählen Sie Azure-Konto erstellen aus. Lernende können Microsoft Azure for Students-Konto erstellen... auswählen.

  2. Wählen Sie im Browser nach entsprechender Aufforderung Ihr Azure-Konto aus, und melden Sie sich mit Ihren Azure-Anmeldeinformationen an. Wenn Sie ein neues Konto erstellen, können Sie sich anmelden, nachdem Ihr Konto erstellt wurde.

  3. Wenn Sie sich erfolgreich angemeldet haben, können Sie das neue Browserfenster schließen. Die Abonnements, die zu Ihrem Azure-Konto gehören, werden auf der Seitenleiste angezeigt.

Erstellen der Funktions-App in Azure

In diesem Abschnitt erstellen Sie eine Funktions-App und zugehörige Ressourcen in Ihrem Azure-Abonnement.

  1. Wählen Sie in der Aktivitätsleiste das Azure-Symbol aus. Wählen Sie dann im Bereich Ressourcen das +-Symbol aus, und wählen Sie die Option Funktions-App in Azure erstellen aus.

    Erstellen einer Ressource in Ihrem Azure-Abonnement

  2. Geben Sie nach entsprechender Aufforderung Folgendes ein:

    Prompt Auswahl
    Auswählen des Abonnements Wählen Sie das zu verwendende Abonnement aus. Diese Eingabeaufforderung wird nicht angezeigt, wenn nur ein Abonnement unter Ressourcen sichtbar ist.
    Eingeben eines global eindeutigen Namens für die Funktions-App Geben Sie einen Namen ein, der in einem URL-Pfad gültig ist. Der eingegebene Name wird überprüft, um sicherzustellen, dass er in Azure Functions eindeutig ist.
    Wählen Sie einen Runtimestapel aus Wählen Sie die lokal ausgeführte Sprachversion aus.
    Auswählen eines Standorts für neue Ressourcen Wählen Sie eine Region in Ihrer Nähe aus, um eine bessere Leistung zu erzielen.

    Die Erweiterung zeigt den Status einzelner Ressourcen an, während diese in Azure im Bereich Azure: Aktivitätsprotokoll erstellt werden.

    Protokoll der Azure-Ressourcenerstellung

  3. Nach Abschluss der Erstellung werden in Ihrem Abonnement die folgenden Azure-Ressourcen erstellt. Die Ressourcen werden basierend auf Ihrem Funktions-App-Namen benannt:

    • Eine Ressourcengruppe, bei der es sich um einen logischen Container für verwandte Ressourcen handelt.
    • Ein Azure Storage-Standardkonto, unter dem Status- und andere Informationen zu Ihren Projekten verwaltet werden.
    • Eine Funktions-App, die als Umgebung zum Ausführen Ihres Funktionscodes dient. Mit einer Funktions-App können Sie Funktionen zu logischen Einheiten gruppieren. Dies erleichtert die Verwaltung, Bereitstellung und Freigabe von Ressourcen im selben Hostingplan.
    • Ein App Service-Plan, der den zugrunde liegenden Host für Ihre serverlose Funktions-App definiert.
    • Eine mit der Funktions-App verbundene Application Insights-Instanz, die die Nutzung Ihrer Funktionen in der App nachverfolgt.

    Nach der Erstellung der Funktions-App wird eine Benachrichtigung angezeigt, und das Bereitstellungspaket wird angewendet.

    Tipp

    Standardmäßig werden die von Ihrer Funktions-App benötigten Azure-Ressourcen basierend auf dem von Ihnen angegebenen Namen der Funktions-App erstellt. Darüber hinaus werden sie auch in derselben neuen Ressourcengruppe mit der Funktions-App erstellt. Falls Sie entweder die Namen dieser Ressourcen anpassen oder vorhandene Ressourcen wiederverwenden möchten, müssen Sie das Projekt stattdessen mit den erweiterten Erstellungsoptionen veröffentlichen.

Bereitstellen des Projekts in Azure

Wichtig

Bei der Bereitstellung in einer vorhandenen Funktions-App wird der Inhalt dieser App in Azure immer überschrieben.

  1. Suchen Sie im Bereich Ressourcen der Azure-Aktivität die soeben erstellte Funktions-App-Ressource, klicken Sie mit der rechten Maustaste auf die Ressource, und wählen Sie Bereitstellen für Funktions-App... aus.

  2. Wenn Sie aufgefordert werden, vorherige Bereitstellungen zu überschreiben, wählen Sie Bereitstellen aus, um Ihren Funktionscode in der neuen Funktions-App-Ressource bereitzustellen.

  3. Wählen Sie nach Abschluss der Bereitstellung Ausgabe anzeigen aus, um die Erstellungs- und Bereitstellungsergebnisse (auch für die von Ihnen erstellten Azure-Ressourcen) anzuzeigen. Wenn Sie die Benachrichtigung übersehen haben, wählen Sie das Glockensymbol in der unteren rechten Ecke aus, um sie erneut anzuzeigen.

    Screenshot: das Fenster „Ausgabe anzeigen“.

Testen der Funktion in Azure

  1. Kopieren Sie die URL des HTTP-Triggers im Bereich Ausgabe. Die URL, über die Ihre per HTTP ausgelöste Funktion aufgerufen wird, muss das folgende Format haben: https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator

  2. Fügen Sie diese neue URL für die HTTP-Anforderung in die Adresszeile des Browsers ein. Sie sollten die gleiche Statusantwort wie zuvor erhalten, als Sie die veröffentlichte App verwendet haben.

Nächste Schritte

Sie haben Visual Studio Code verwendet, um eine dauerhafte PowerShell-Funktions-App zu erstellen und zu veröffentlichen.