Freigeben über


Schnellstart: Erstellen einer PowerShell Durable Functions-App

Verwenden Sie Durable Functions, ein Feature von Azure Functions, um zustandsbehaftete Funktionen in einer serverlosen Umgebung zu schreiben. Sie installieren Durable Functions, indem Sie die Azure Functions-Erweiterung in Visual Studio Code installieren. Die Erweiterung verwaltet Zustand, Prüfpunkte und Neustarts in Ihrer Anwendung.

In diesem Schnellstart verwenden Sie die Durable Functions-Erweiterung in Visual Studio Code, um eine Durable Functions-App des Typs „Hallo Welt“ in Azure Functions lokal zu erstellen und zu testen. Die Durable Functions-App orchestriert und verkettet Aufrufe anderer Funktionen. Anschließend veröffentlichen Sie den Funktionscode in Azure. Die verwendeten Tools sind über die Visual Studio Code-Erweiterung verfügbar.

Ausführen einer Durable Functions-App in Azure.

Voraussetzungen

Für die Durchführung dieses Schnellstarts benötigen Sie Folgendes:

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Erstellen Ihres lokalen Projekts

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

  1. Wählen Sie in Visual Studio Code F1 (oder STRG/CMD+UMSCHALT+P) aus, um die Befehlspalette zu öffnen. Geben Sie an der Eingabeaufforderung (>) geben Sie Azure Functions: Neues Projekt erstellen ein und wählen Sie diese Option aus.

    Screenshot des Befehls

  2. Wählen Sie Durchsuchen aus. Wechseln Sie im Dialogfeld Ordner auswählen zu einem Ordner, der für Ihr Projekt verwendet werden soll, und wählen Sie dann Auswählen aus.

  3. Geben Sie nach entsprechender Aufforderung folgende Informationen ein:

    Prompt Aktion BESCHREIBUNG
    Sprache des Funktions-App-Projekts auswählen Wählen Sie PowerShell aus. Erstellt ein lokales PowerShell-Functions-Projekt.
    Wählen Sie eine Version aus Wählen Sie Azure Functions v4 aus. 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 Wählen Sie Vorerst überspringen aus.
    Auswählen, wie Sie Ihr Projekt öffnen möchten Wählen Sie In aktuellem Fenster öffnen aus. Öffnet Visual Studio Code im ausgewählten Ordner

Visual Studio Code installiert die Azure Functions Core Tools, wenn dies zum Erstellen eines Projekts erforderlich ist. Außerdem wird ein Funktions-App-Projekt in einem Ordner erstellt. Dieses Projekt enthält die Konfigurationsdateien host.json und local.settings.json.

Außerdem wird im Stammordner die Datei package.json erstellt.

Konfigurieren der Funktions-App für die Verwendung von PowerShell 7.4 und des eigenständigen Sdk für dauerhafte Funktionen

Öffnen Sie die local.settings.json-Datei, und vergewissern Sie sich, dass eine Einstellung mit dem Namen FUNCTIONS_WORKER_RUNTIME_VERSION auf 7.4 festgelegt ist und dass eine Einstellung mit dem Namen ExternalDurablePowerShellSDK auf true festgelegt ist. Wenn sie fehlen oder auf andere Werte festgelegt sind, aktualisieren Sie den Inhalt der Datei.

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "powershell",
    "FUNCTIONS_WORKER_RUNTIME_VERSION" : "7.4",
    "ExternalDurablePowerShellSDK": "true"
  }
}

Geben Sie als Nächstes einen Eintrag für das DF SDK in Ihrer requirements.psd1 Datei an, wie im folgenden Beispiel gezeigt:

# This file enables modules to be automatically managed by the Functions service.
# See https://aka.ms/functionsmanageddependency for additional information.
#
@{
    # For latest supported version, go to 'https://www.powershellgallery.com/packages/AzureFunctions.PowerShell.Durable.SDK/'.
    'AzureFunctions.PowerShell.Durable.SDK' = '2.*'
}

Stellen Sie sicher, dass Sie die neueste Version des AzureFunctions.PowerShell.Durable.SDK-Moduls verwenden. Der 2.* Versionsbezeichner stellt sicher, dass Sie die neueste stabile 2.x-Version erhalten.

Fügen Sie der Datei die folgende Zeile profile.ps1 hinzu (in der Regel am Ende der Datei):

Import-Module AzureFunctions.PowerShell.Durable.SDK -ErrorAction Stop

Erstellen Ihrer Funktionen

Die einfachste Durable Functions-App weist drei Funktionen auf:

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

Orchestratorfunktion

Sie verwenden eine Vorlage, um den Code Ihrer Durable Functions-App in Ihrem Projekt zu erstellen.

  1. Geben Sie in der Befehlspalette Azure Functions: Funktion erstellen ein, und wählen Sie diese Option aus.

  2. Geben Sie nach entsprechender Aufforderung folgende Informationen ein:

    Prompt Aktion BESCHREIBUNG
    Auswählen einer Vorlage für Ihre Funktion Geben Sie Orchestrator für Durable Functions ein. Erstellt die Orchestrierung einer Durable Functions-App
    Angeben eines Funktionsnamens Geben Sie HelloOrchestrator ein. Ein Name für Ihre dauerhafte Funktion

Sie haben einen Orchestrator zum Koordinieren von Aktivitätsfunktionen hinzugefügt. Öffnen Sie HelloOrchestrator/run.ps1, um die Orchestratorfunktion anzuzeigen. Jeder Aufruf des cmdlets Invoke-ActivityFunction ruft eine Aktivitätsfunktion mit dem Namen Hello auf.

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

Aktivitätsfunktion

  1. Geben Sie in der Befehlspalette Azure Functions: Funktion erstellen ein, und wählen Sie diese Option aus.

  2. Geben Sie nach entsprechender Aufforderung folgende Informationen ein:

    Prompt Aktion BESCHREIBUNG
    Auswählen einer Vorlage für Ihre Funktion Wählen Sie Durable Functions-Aktivität aus. Erstellt eine Aktivitätsfunktion.
    Angeben eines Funktionsnamens Geben Sie Hello ein. Der Name Ihrer Aktivitätsfunktion.

Sie haben die Aktivitätsfunktion Hello hinzugefügt, die durch den 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 über HTTP ausgelöste Funktion hinzu, durch die die Orchestrierung gestartet wird.

Clientfunktion (HTTP-Starter)

  1. Geben Sie in der Befehlspalette Azure Functions: Funktion erstellen ein, und wählen Sie diese Option aus.

  2. Geben Sie nach entsprechender Aufforderung folgende Informationen ein:

    Prompt Aktion BESCHREIBUNG
    Auswählen einer Vorlage für Ihre Funktion Wählen Sie Durable Functions-HTTP-Start aus. Erstellt eine HTTP-Startfunktion.
    Angeben eines Funktionsnamens Geben Sie HttpStart ein. Der Name Ihrer Aktivitätsfunktion.
    Autorisierungsstufe Wählen Sie Anonym aus. Für Demozwecke kann die Funktion mit diesem Wert ohne Authentifizierung aufgerufen werden.

Sie haben eine per HTTP ausgelöste Funktion hinzugefügt, durch die eine Orchestrierung gestartet wird. Öffnen Sie HttpStart/run.ps1, um zu überprüfen, ob das Cmdlet "Start-NewOrchestration" zum Starten einer neuen Orchestrierung verwendet wird. Anschließend wird das cmdlet New-OrchestrationCheckStatusResponse verwendet, um eine HTTP-Antwort zurückzugeben, die URLs enthält, 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.

Tipp

In dieser Schnellstartanleitung wird das eigenständige PowerShell-SDK für dauerhafte Funktionen verwendet, das jetzt allgemein verfügbar ist und die beste Leistung und die neuesten Features bietet. Weitere Informationen zum SDK und zur Migration aus der integrierten Legacyversion finden Sie im eigenständigen PowerShell SDK-Handbuch.

Lokales Testen der Funktion

Azure Functions Core Tools bietet Ihnen die Möglichkeit, ein Azure Functions-Projekt auf Ihrem lokalen Entwicklungscomputer auszuführen. Sie werden beim ersten Starten einer Funktion in Visual Studio zum Installieren dieser Tools aufgefordert.

  1. Legen Sie zum Testen der Funktion einen Breakpoint im Code der Aktivitätsfunktion Hello (in Hello/run.ps1) fest. Wählen Sie F5 aus, oder wählen Sie Debuggen: Debuggen starten in der Befehlspalette, um das Funktions-App-Projekt zu starten. Die Ausgabe der Core Tools wird im Panel „TERMINAL“ angezeigt.

    Hinweis

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

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

    Screenshot, der den Befehl „Speicherkonto erstellen“ zeigt.

  3. Geben Sie die folgenden Informationen an, wenn Sie dazu aufgefordert werden, um ein neues Speicherkonto in Azure zu erstellen.

    Prompt Aktion BESCHREIBUNG
    Auswählen des Abonnements Wählen Sie den Namen Ihres Abonnements aus. Ihr Azure-Abonnement.
    Auswählen eines Speicherkontos Wählen Sie Neues Speicherkonto erstellen aus.
    Eingeben des Namens für das neue Speicherkonto Geben Sie einen eindeutigen Namen ein. Der Name des zu erstellenden Speicherkontos.
    Wählen Sie eine Ressourcengruppe aus Geben Sie einen eindeutigen Namen ein. Der Name der zu erstellenden Ressourcengruppe
    Wählen Sie einen Speicherort aus Wählen Sie eine Azure-Region. Wählen Sie eine Region in Ihrer Nähe aus.
  4. Kopieren Sie im Panel „TERMINAL“ den URL-Endpunkt Ihrer über HTTP ausgelösten Funktion.

    Screenshot: Lokale Ausgabe von Azure

  5. Verwenden Sie einen Browser oder ein HTTP-Testtool, um eine HTTP POST-Anforderung an den URL-Endpunkt zu senden.

    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 initiale Ergebnis der HTTP-Funktion. Sie teilt Ihnen mit, dass die dauerhafte Orchestrierung erfolgreich gestartet wurde. Das Endergebnis der Orchestrierung wird noch nicht angezeigt. Die Antwort enthält einige nützliche URLs. Fragen Sie zunächst 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. Sie können auch weiterhin Ihr HTTP-Testtool verwenden, um die GET-Anforderung ausstellen zu können.

    Die Anforderung fragt die Orchestrierungsinstanz der Status ab. Sie müssen eine Antwort erhalten, die zeigt, dass die Instanz abgeschlossen wurde, und die die Ausgaben oder Ergebnisse der dauerhaften Funktion enthält. Es sieht wie in diesem Beispiel 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. Um das Debuggen zu beenden, wählen Sie in Visual Studio Code UMSCHALT+F5 aus.

Nachdem Sie sichergestellt haben, dass die Funktion auf Ihrem lokalen Computer ordnungsgemäß 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 in der Aktivitätsleiste das Azure-Symbol aus. Wählen Sie dann unter Ressourcen die Option Bei Azure anmelden aus.

    Screenshot des Fensters „Bei Azure anmelden“ in Visual Studio 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. Studierende können ein Microsoft Azure for Students-Konto erstellen.

  2. Wenn Sie im Browser dazu aufgefordert werden, wählen Sie Ihr Azure-Konto aus, und melden Sie sich mit den Anmeldeinformationen Ihres Azure-Kontos an. Wenn Sie ein neues Konto erstellen, können Sie sich anmelden, nachdem Ihr Konto erstellt wurde.

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

Erstellen der Funktions-App in Azure

In diesem Abschnitt erstellen Sie eine Funktions-App im Flex-Verbrauchsplan sowie verwandte Ressourcen in Ihrem Azure-Abonnement. Viele der Entscheidungen zur Ressourcenerstellung werden für Sie basierend auf Standardverhalten getroffen. Um mehr Kontrolle über die erstellten Ressourcen zu erhalten, müssen Sie stattdessen Ihre Funktions-App mit erweiterten Optionen erstellen.

  1. Drücken Sie in Visual Studio Code F1, um die Befehlspalette zu öffnen. Geben Sie in der Eingabeaufforderung (>) Azure Functions: Funktions-App in Azure erstellen ein, und wählen Sie diese Option aus.

  2. Geben Sie nach entsprechender Aufforderung folgende Informationen ein:

    Prompt Aktion
    Auswählen des Abonnements Wählen Sie das zu verwendende Azure-Abonnement aus. Die Aufforderung wird nicht angezeigt, wenn unter Ressourcen nur ein Abonnement angezeigt wird.
    Geben Sie einen neuen Funktions-App-Namen ein. Geben Sie einen global eindeutigen 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.
    Auswählen eines Standorts für neue Ressourcen Wählen Sie eine Azure-Region. Wählen Sie eine Region in Ihrer Nähe aus, um eine bessere Leistung zu erzielen. Es werden nur Regionen angezeigt, die von Flex-Verbrauchsplänen unterstützt werden.
    Wählen Sie einen Runtimestapel aus Wählen Sie die Sprachversion aus, die Sie derzeit lokal ausführen.
    Auswählen des Ressourcenauthentifizierungstyps Wählen Sie verwaltete Identität aus, bei der es sich um die sicherste Option zum Herstellen einer Verbindung mit dem Standardmäßigen Hostspeicherkonto handelt.

    Im Panel Azure: Aktivitätsprotokoll zeigt die Azure-Erweiterung den Status der einzelnen Ressourcen an, während diese in Azure erstellt werden.

    Screenshot des Protokolls der Azure-Ressourcenerstellung

  3. Wenn die Funktions-App erstellt wird, werden die folgenden zugehörigen Ressourcen in Ihrem Azure-Abonnement erstellt. Die Ressourcen werden basierend auf dem Namen benannt, den Sie für Ihre Funktions-App eingegeben haben.

    • Eine Ressourcengruppe, bei der es sich um einen logischen Container für verwandte Ressourcen handelt.
    • 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 Azure App Service-Plan, der den zugrunde liegenden Host für Ihre Funktions-App definiert
    • Ein standardmäßiges Azure Storage-Konto, das vom Funktionenhost verwendet wird, um den Zustand und andere Informationen zu Ihrer Funktions-App zu verwalten.
    • Eine mit der Funktions-App verbundene Application Insights-Instanz, die die Nutzung Ihrer Funktionen in der App nachverfolgt
    • Benutzerseitig zugewiesene verwaltete Identität, die der Rolle Mitwirkender an Storage-Blobdaten im neuen Standardhost-Speicherkonto hinzugefügt wird.

    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 Namen erstellt, den Sie für Ihre Funktions-App eingeben. Standardmäßig werden die Ressourcen mit der Funktions-App in derselben neuen Ressourcengruppe erstellt. Wenn Sie die Namen der zugehörigen Ressourcen anpassen oder vorhandene Ressourcen wiederverwenden möchten, veröffentlichen Sie das Projekt mithilfe erweiterter Erstellungsoptionen.

Bereitstellen des Projekts in Azure

Wichtig

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

  1. Geben Sie in der Befehlspalette Azure Functions: In Funktions-App bereitstellen ein, und wählen Sie diese Option aus.

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

  3. Wählen Sie nach Abschluss der Bereitstellung Ausgabe anzeigen aus, um die Erstellungs- und Bereitstellungsergebnisse einschließlich der von Ihnen erstellten Azure-Ressourcen anzuzeigen. Wenn Sie die Benachrichtigung übersehen haben, wählen Sie unten rechts das Glockensymbol aus, um sie erneut anzuzeigen.

    Screenshot: Fenster „Ausgabe anzeigen“

Testen der Funktion in Azure

  1. Stellen Sie sicher, dass die App-Einstellung mit dem Namen ExternalDurablePowerShellSDK auf true gesetzt ist.

  2. Kopieren Sie die URL des HTTP-Triggers aus dem Ausgabepanel. Die URL zum Abrufen Ihrer über HTTP ausgelösten Funktion muss das folgende Format aufweisen:

    https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator

  3. Fügen Sie die neue URL für die HTTP-Anforderung in die Adressleiste des Browsers ein. Wenn Sie die veröffentlichte App verwenden, können Sie davon ausgehen, dass sie dieselbe Statusantwort erhalten, die Sie erhalten haben, wenn Sie lokal getestet wurden.

Die PowerShell Durable Functions-App, die Sie mithilfe von Visual Studio Code erstellt und veröffentlicht haben, ist einsatzbereit.

Bereinigen von Ressourcen

Wenn Sie Ihre erstellten Ressourcen nach Abschluss des Schnellstarts nicht mehr benötigen, löschen Sie die Ressourcengruppe und alle zugehörigen Ressourcen, um damit verbundene Kosten in Ihrem Azure-Abonnement zu vermeiden.