Freigeben über


Schnellstart: Konfigurieren einer Durable Functions-App für die Verwendung eines dauerhaften Aufgabenplanungsmoduls

Schreiben Sie zustandsbehaftete Funktionen in einer serverlosen Umgebung mithilfe von Durable Functions, einem Feature von Azure Functions. Szenarien, in denen langlebige Funktionen nützlich ist, umfassen die Orchestrierung von Microservices und Workflows, zustandsbehaftete Muster wie Auffächern (nach innen und außen) und zeitintensive Aufgaben.

Sie können den Durable Task Scheduler als Back-End für Ihre Durable Functions verwenden, um den Orchestrierungs- und Entitätslaufzeitstatus zu speichern.

In dieser Schnellstartanleitung führen Sie die folgenden Schritte aus:

  • Konfigurieren Sie eine vorhandene Durable Functions-App für die Verwendung des Durable Task Scheduler.
  • Richten Sie den Emulator für dauerhafte Aufgaben für die lokale Entwicklung ein.
  • Stellen Sie Ihre App mithilfe von Visual Studio Code für Azure im App Service-Plan bereit.
  • Überwachen Sie den Status Ihrer App und des Aufgabenhubs auf dem Dashboard "Durable Task Scheduler".

Für C# verwendet diese Schnellstartanleitung das .NET isolierten Workermodell.

Voraussetzungen

  • Ein vorhandenes Azure Functions Projekt auf Ihrem lokalen Computer:
  • Docker installiert, um den Emulator für den dauerhaften Aufgabenplaner auszuführen.
  • Azurite installiert.
  • Ein HTTP-Testtool , das Ihre Daten sicher hält.

Hinzufügen des Pakets "Durable Task Scheduler"

Installieren Sie die neueste Version des Pakets Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged mithilfe des Befehls dotnet add package:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged --prerelease

Hinweis

Für die Erweiterung "Durable Task Scheduler" ist Microsoft.Azure.Functions.Worker.Extensions.DurableTask-Version 1.2.2 oder höher erforderlich.

Aktualisieren Sie in host.jsondie extensionBundle Eigenschaft so, dass sie die Vorschauversion verwendet, die das Paket "Durable Task Scheduler" enthält:

{
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
    "version": "[4.29.0, 5.0.0)"
  }
}

Aktualisieren von host.json

Aktualisieren Sie die host.json wie folgt, um den Durable Task Scheduler als Back-End zu verwenden.

{
  "extensions": {
    "durableTask": {
      "hubName": "%TASKHUB_NAME%",
      "storageProvider": {
        "type": "azureManaged",
        "connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING"
      }
    }
  }
}

Konfigurieren Sie local.settings.json

Hinzufügen von Verbindungsinformationen für die lokale Entwicklung:

{
  "IsEncrypted": false,
  "Values": {
    "FUNCTIONS_WORKER_RUNTIME": "<DEPENDENT ON YOUR PROGRAMMING LANGUAGE>",
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=http://localhost:8080;Authentication=None",
    "TASKHUB_NAME": "default"
  }
}

Einrichten des Emulators für dauerhafte Aufgaben

  1. Ziehen Sie das Docker-Image, das den Emulator enthält.

    docker pull mcr.microsoft.com/dts/dts-emulator:latest
    
  2. Führen Sie den Emulator aus.

    docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:latest
    

    Die folgende Ausgabe gibt an, dass der Emulator erfolgreich gestartet wurde.

    Screenshot, der zeigt, dass der Emulator erfolgreich am Terminal gestartet wurde.

  3. Notieren Sie sich die Ports, die auf Docker-Desktop verfügbar gemacht werden. Der Scheduler macht mehrere Ports für unterschiedliche Zwecke verfügbar:

    • 8080: gRPC-Endpunkt, der es einer App ermöglicht, eine Verbindung mit dem Scheduler herzustellen
    • 8082: Endpunkt für das Dashboard des langlebigen Aufgabenplaners

    Screenshot der Ports in Docker.

Hinweis

Der Emulator "Durable Task Scheduler" speichert Orchestrierungsdaten im Arbeitsspeicher, was bedeutet, dass alle Daten verloren gehen, wenn er heruntergefahren wird.

Lokales Testen

  1. Wechseln Sie zum Stammverzeichnis Ihrer App, und starten Sie Azurite.

    azurite start
    
  2. Führen Sie die Anwendung aus.

    func start
    

    In Ihrer App sollte eine Liste der Funktionen angezeigt werden.

  3. Starten Sie eine Orchestrierungsinstanz, indem Sie eine HTTP-Anforderung an den URL-Endpunkt POST senden, indem Sie das von Ihnen ausgewählte HTTP-Testtool verwenden.

  4. Kopieren Sie den URL-Wert, statusQueryGetUri und fügen Sie ihn in die Adressleiste Ihres Browsers ein. Der Status der Orchestrierungsinstanz sollte angezeigt werden:

      {
        "name": "DurableFunctionsOrchestration",
        "instanceId": "<instanceID>",
        "runtimeStatus": "Completed",
        "input": null,
        "customStatus": null,
        "output": [
          "Hello Tokyo!",
          "Hello Seattle!",
          "Hello London!"
        ],
        "createdTime": "2025-02-21T21:09:59Z",
        "lastUpdatedTime": "2025-02-21T21:10:00Z"
      }
    
  5. Wenn Sie weitere Details zur Orchestrierungsinstanz anzeigen möchten, navigieren Sie zu http://localhost:8082/ , um auf das Dashboard für den langlebigen Aufgabenplaner zuzugreifen.

  6. Klicken Sie auf den Standardmäßigen Aufgabenhub, um das Dashboard anzuzeigen.

Treten Probleme beim Testen auf? Weitere Informationen finden Sie im Handbuch zur Problembehandlung.

Ausführen Ihrer App in Azure

Erstellen der erforderlichen Ressourcen

Erstellen Sie eine Instanz des langlebigen Aufgabenplaners und eine Azure Functions-App in Azure, indem Sie dem integrierten Ablauf zur Erstellung von Funktions-Apps folgen. Diese Oberfläche richtet automatisch identitätsbasierten Zugriff ein und konfiguriert die erforderlichen Umgebungsvariablen für die App für den Zugriff auf den Scheduler.

  1. Navigieren Sie zum Blade für die Erstellung von Apps.

    Screenshot der Hostingoptionen für Funktions-Apps.

  2. Im Blade Funktions-App erstellen (Flex-Verbrauch) geben Sie die Informationen auf der Registerkarte Grundlagen ein.

    Screenshot der Registerkarte

    Feld BESCHREIBUNG
    Abonnement Wählen Sie Ihr Azure-Abonnement aus.
    Ressourcengruppe Wählen Sie eine vorhandene Ressourcengruppe aus, oder klicken Sie auf "Neu erstellen", um eine neue zu erstellen.
    Name der Funktions-App Erstellen Sie einen eindeutigen Namen für Ihre Funktions-App.
    Möchten Sie Code oder ein Containerimage bereitstellen? Lassen Sie die Option "Code " ausgewählt.
    Region Wählen Sie eine der unterstützten Regionen aus.
    Runtimestapel Wählen Sie die Laufzeit aus, die Sie für diese Schnellstartanleitung verwenden.
    Version Wählen Sie Ihre Version des Runtimestapels aus.
    Instanzgröße Wählen Sie eine Instanzgröße aus, oder verwenden Sie die Standardauswahl. Weitere Informationen zu Instanzengrößen.
    Zonenredundanz Verlassen Sie die Standardeinstellung "Deaktiviert ".
  3. Wählen Sie die Registerkarte Durable Functions aus.

  4. Wählen Sie Azure managed: Durable Task Scheduler als Back-End-Anbieter für Ihre Durable Functions aus.

  5. Erstellen Sie eine Scheduler-Ressource. Diese Aktion erstellt automatisch einen Aufgabenhub.

    Screenshot der Erstellung einer Flex Consumption Function-App.

    Feld BESCHREIBUNG
    Speicher-Back-End Wählen Sie Azure managed: Durable Task Scheduler aus.
    Region Stellen Sie sicher, dass die Bereiche der Planer- und Funktions-App identisch sind.
    Langlebiger Aufgabenplaner Verwenden Sie den angebotenen Zeitplannamen, oder klicken Sie auf "Neu erstellen", um einen benutzerdefinierten Namen zu erstellen.
    Planen Wählen Sie den Preisplan aus, der ihrem Projekt am besten entspricht. Überprüfen Sie das Handbuch zum Auswählen eines Orchestrierungsframeworks , um zu ermitteln, welcher Plan für die Produktionsverwendung am besten geeignet ist.
    Kapazitätseinheiten Gilt nur, wenn der Tarifplan "Dediziert" ausgewählt ist. Sie können bis zu 3 Kapazitätseinheiten auswählen.
  6. Klicken Sie auf "Überprüfen" und "Erstellen ", um die Ressourcenerstellung zu überprüfen.

    Eine vom Benutzer zugewiesene verwaltete Identität mit der erforderlichen rollenbasierten Zugriffssteuerungsberechtigung (RBAC) wird automatisch erstellt und der Funktions-App hinzugefügt. In der Zusammenfassungsansicht finden Sie Informationen zur verwalteten Identitätsressource, z. B.:

    • Die zugewiesene Rolle (Mitwirkende an langlebigen Aufgabendaten)

    • Die Zuordnung, die sich auf die Ebene des Aufgabenhubs bezieht

      Screenshot der Felder und Eigenschaften, die auf der Registerkarte

  7. Klicken Sie auf "Erstellen ", nachdem die Überprüfung bestanden wurde.

Die Ressourcenbereitstellung kann etwa 15 bis 20 Minuten dauern. Sobald dies abgeschlossen ist, können Sie Ihre App für Azure bereitstellen.

Funktions-App auf Azure bereitstellen

Von Bedeutung

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: Deploy to Function App ein und wählen Sie anschließend die 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 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“.

Apps im Functions Premium-Plan

Wenn Ihre App im Functions Premium-Plan ausgeführt wird, aktivieren Sie nach der Bereitstellung die Einstellung zur Laufzeitskalierungsüberwachung, um sicherzustellen, dass Ihre App basierend auf der Last automatisch skaliert wird.

az resource update -g <resource_group> -n <function_app_name>/config/web --set properties.functionsRuntimeScaleMonitoringEnabled=1 --resource-type Microsoft.Web/sites

Testen Ihrer Funktionsanwendung

Führen Sie den folgenden Befehl aus, um die URL Ihrer Funktion abzurufen:

az functionapp function list --resource-group <RESOURCE_GROUP_NAME> --name <FUNCTION_APP_NAME>  --query '[].{Function:name, URL:invokeUrlTemplate}' --output json

Orchestrierungsstatus überprüfen

Überprüfen Sie den Status der Orchestrierungsinstanz und der Aktivitätsdetails im Dashboard "Durable Task Scheduler". Für den Zugriff auf das Dashboard müssen Sie sich anmelden.

Hinweis

Die folgende Anweisung zeigt eine Rollenzuweisung, die auf einen bestimmten Aufgabenhub festgelegt ist. Wenn Sie Zugriff auf alle Aufgabenhubs in einem Planer benötigen, führen Sie die Zuordnung auf der Planerebene aus.

  1. Navigieren Sie im Portal zur Ressource "Durable Task Scheduler".

  2. Wählen Sie einen Aufgabenhubnamen aus.

  3. Wählen Sie im linken Menü Zugriffssteuerung (IAM) aus.

  4. Klicken Sie auf "Hinzufügen" , um eine Rollenzuweisung hinzuzufügen.

    Screenshot des Hinzufügens der Rollenzuweisung im bereich Access Control im Portal.

  5. Suchen Sie Mitwirkender an langlebigen Aufgabendaten, und wählen Sie die Rolle aus. Klicke auf Weiter.

    Screenshot der Auswahl der Rollenzuweisung „Mitwirkender an langlebigen Aufgabendaten“ im Portal

  6. Wählen Sie auf der Registerkarte " Mitglieder " für "Zugriff zuweisen"die Option "Benutzer", "Gruppe" oder "Dienstprinzipal" aus.

  7. Klicken Sie für Mitglieder auf +Mitglieder auswählen.

  8. Suchen Sie im Bereich "Mitglieder auswählen " nach Ihrem Namen oder Ihrer E-Mail:

    Screenshot der Auswahl des vom Benutzer zugewiesenen verwalteten Identitätstyps im Portal.

  9. Wählen Sie Ihre E-Mail aus, und klicken Sie auf die Schaltfläche " Auswählen ".

  10. Klicken Sie auf "Überprüfen" und "Zuweisen ", um die Zuweisung der Rolle abzuschließen.

  11. Nachdem die Rolle zugewiesen wurde, klicken Sie im linken Menü der Task Hub-Ressource auf "Übersicht ", und navigieren Sie zur Dashboard-URL im oberen Essentials-Abschnitt .

Bereinigen von Ressourcen

Wenn Sie die zur Fertigstellung der Schnellstartanleitung erstellten Ressourcen nicht mehr benötigen und um dadurch verbundene Kosten in Ihrem Azure-Abonnement zu vermeiden, löschen Sie die Ressourcengruppe und alle zugehörigen Ressourcen.

Nächste Schritte