Schnellstart: Erstellen einer PowerShell-Durable Functions-App

In dieser Schnellstartanleitung verwenden Sie Visual Studio Code zum Erstellen und Testen einer PowerShell-Durable Functions-App, die Aufrufe anderer Funktionen koordiniert und miteinander verkettet. Anschließend veröffentlichen Sie sie in Azure.

Durable Functions verwaltet Zustand, Prüfpunkte und Neustarts in Ihrer Anwendung, sodass Sie zustandsbehaftete Workflows in einer serverlosen Umgebung schreiben können.

Voraussetzungen

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

  • Visual Studio Code installiert.

  • Die Visual Studio Code Erweiterung Azure Functions installiert.

  • Die neueste Version von Azure Functions Core Tools installiert.

  • Ein HTTP-Testtool , das Ihre Daten sicher hält. Weitere Informationen finden Sie unter HTTP-Testtools.

  • Ein Azure-Abonnement. Um Durable Functions zu verwenden, müssen Sie über ein Azure Storage Konto verfügen.

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

Erstellen Ihres lokalen Projekts

In diesem Abschnitt verwenden Sie Visual Studio Code, um ein lokales Azure Functions Projekt zu erstellen.

  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 (>) Azure Functions: Neues Projekt erstellen ein und wählen Sie es 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 Action Beschreibung
    Sprache des Funktions-App-Projekts auswählen Wählen Sie PowerShell. Erstellt ein lokales PowerShell-Functions-Projekt.
    Version auswählen 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 Azure Functions Core Tools, wenn ein Projekt erstellt werden muss. 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 des eigenständigen Durable Functions SDK

Das eigenständige SDK bietet die beste Leistung und die neuesten Features für PowerShell-Durable Functions. Konfigurieren Sie sie in drei Schritten:

Schritt 1: Öffnen Und überprüfen Sie local.settings.json , ob die folgenden Einstellungen vorhanden sind. Fügen Sie sie bei Bedarf hinzu, oder aktualisieren Sie sie:

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

Schritt 2: Öffnen requirements.psd1 Sie die SDK-Abhängigkeit, und fügen Sie sie hinzu:

@{
    'AzureFunctions.PowerShell.Durable.SDK' = '2.*'
}

Der 2.* Bezeichner stellt sicher, dass Sie die neueste stabile 2.x-Version aus der PowerShell-Katalog erhalten.

Schritt 3: Fügen Sie am Ende der profile.ps1 Datei die folgende Zeile hinzu:

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

Erstellen Ihrer Funktionen

Eine einfache Durable Functions App verfügt über drei Funktionen:

Funktionstyp Purpose
Orchestrator Ein Workflow, der andere Funktionen koordiniert.
Aktivität Vom Orchestrator aufgerufen, um Arbeit auszuführen und einen Wert zurückzugeben.
Client (HTTP Starter) Eine HTTP-ausgelöste Funktion, die einen Orchestrator startet.

Öffnen Sie für jede Funktion die Befehlspalette und wählen Sie Azure Functions: Funktion erstellen aus; anschließend geben Sie die angeforderten Werte an.

1. Orchestrator-Funktion

Prompt Wert
Vorlage auswählen Durable Functions Orchestrator
Funktionsname HelloOrchestrator

Öffnen Sie HelloOrchestrator/run.ps1 , um den Orchestrator anzuzeigen. Jeder Aufruf an Invoke-ActivityFunction ruft die Hello Aktivitätsfunktion auf.

2. Aktivitätsfunktion

Prompt Wert
Vorlage auswählen Durable Functions-Aktivität
Funktionsname Hallo

Öffnen Sie Hello/run.ps1 , um zu sehen, dass ein Name als Eingabe verwendet wird und eine Begrüßung zurückgegeben wird. Aktivitätsfunktionen sind der Ort, an dem Sie Aktionen wie Datenbankaufrufe oder Berechnungen ausführen.

3. Clientfunktion (HTTP Starter)

Prompt Wert
Vorlage auswählen Durable Functions HTTP Starter
Funktionsname HttpStart
Autorisierungsstufe Anonym (für Demozwecke)

Öffnen Sie HttpStart/run.ps1, um zu überprüfen, ob es Start-NewOrchestration verwendet wird, um eine neue Orchestrierung zu starten, und New-OrchestrationCheckStatusResponse, um eine HTTP-Antwort mit Überwachungs-URLs zurückzugeben.

Sie verfügen jetzt über eine Durable Functions-App, die Sie lokal ausführen und für Azure bereitstellen können.

Tipp

In dieser Schnellstartanleitung wird das eigenständige Durable Functions PowerShell SDK verwendet. 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 aufgefordert, diese Tools beim ersten Starten einer Funktion in Visual Studio zu installieren.

  1. Legen Sie zum Testen der Funktion einen Breakpoint im Code der Aktivitätsfunktion Hello (in Hello/run.ps1) fest. Drücken Sie F5, oder wählen Sie Debuggen: Debuggen starten in der Befehlspalette aus, 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 Durable Functions Diagnostics.

  2. Durable Functions erfordert ein Speicherkonto zum Betrieb. Sie können den Azurite-Speicher-Emulator für die lokale Entwicklung verwenden oder ein Azure Speicherkonto erstellen, wenn Sie dazu aufgefordert werden. Wenn Visual Studio Code Sie auffordert, ein Speicherkonto auszuwählen, wählen Sie Speicherkonto auswählen aus.

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

    Prompt Action 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 aus. 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.

  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. Du solltest eine Antwort erhalten, die zeigt, dass die Instanz abgeschlossen ist, zusammen mit den Ausgaben der dauerhaften Funktion.

    {
        "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 überprüft haben, ob die Funktion auf Ihrem lokalen Computer ordnungsgemäß ausgeführt wird, ist es an der Zeit, das Projekt in Azure zu 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 unter Ressourcen die Option Bei Azure anmelden aus.

    Screenshot des Fensters zum Anmelden bei Azure 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. Kursteilnehmer können Create an Azure for Students Account auswählen.

  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. Wählen Sie in Visual Studio Code F1 aus, um die Befehlspalette zu öffnen. Geben Sie an der Eingabeaufforderung (>) ein und wählen Sie dann Azure Functions: Funktions-App in Azure erstellen aus.

  2. Geben Sie nach entsprechender Aufforderung folgende Informationen ein:

    Prompt Action
    Auswählen des Abonnements Wählen Sie aus, welches Azure-Abonnement verwendet werden soll. Die Eingabeaufforderung wird nicht angezeigt, wenn nur ein Abonnement unter Ressourcen 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 aus. 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 Runtime-Stack 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 Bereich Azure: Aktivitätsprotokoll zeigt die erweiterung Azure den Status einzelner Ressourcen an, während sie in Azure erstellt werden.

    Screenshot, der das Protokoll der Erstellung von Azure-Ressourcen anzeigt.

  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 Standard-Azure Storage-Konto, das vom Funktionshost zum Verwalten des Zustands und anderer Informationen zu Ihrer Funktions-App verwendet wird.
    • 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.

    Eine Benachrichtigung wird angezeigt, nachdem Ihre Funktionsanwendung erstellt und das Bereitstellungspaket angewendet wurde.

    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

Von Bedeutung

Die Bereitstellung in einer vorhandenen Funktions-App überschreibt immer den Inhalt dieser App in Azure.

  1. Geben Sie in der Befehlspalette Azure Functions: Deploy to Function App ein und wählen Sie dann.

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

  3. Wenn die Bereitstellung abgeschlossen ist, wählen Sie View Output aus, um die Erstellungs- und Bereitstellungsergebnisse anzuzeigen, einschließlich der Azure Ressourcen, die Sie erstellt haben. Wenn Sie die Benachrichtigung übersehen haben, wählen Sie unten rechts das Glockensymbol aus, um sie erneut anzuzeigen.

    Screenshot des Fensters „Ausgabe anzeigen“.

Testen Sie die Funktion in Azure

  1. Überprüfen Sie im Azure-Portal (oder mithilfe des Azure CLI), ob die App-Einstellung ExternalDurablePowerShellSDK auf true festgelegt ist. Wenn sie nicht vorhanden ist, fügen Sie sie unter "Einstellungsumgebungsvariablen>" hinzu, und starten Sie die Funktions-App neu.

  2. Kopieren Sie die URL des HTTP-Triggers aus dem Ausgabepanel. Die URL sollte in diesem Format vorliegen:

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

  3. Senden Sie eine HTTP POST-Anforderung an die URL. Sie sollten die gleiche Statusantwort erhalten, die Sie erhalten haben, wenn Sie lokal getestet wurden.

Wenn die Orchestrierung nicht gestartet wird, überprüfen Sie die Funktions-App-Protokolle im Azure-Portal unter Monitor>Log stream auf Fehler im Zusammenhang mit dem SDK-Import oder der Speicherkonnektivität.

Bereinigen von Ressourcen

Wenn Sie die Ressourcen, die Sie zur Ausführung des Schnellstarts erstellt haben, nicht mehr benötigen, löschen Sie die Ressourcengruppe und alle zugehörigen Ressourcen, um Kosten in Ihrem Azure-Abonnement zu vermeiden.