Erstellen Ihrer ersten dauerhaften Funktion in JavaScript
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.
Wichtig
Der Inhalt dieses Artikels ändert sich abhängig von dem Node.js-Programmiermodell, das Sie oben auf der Seite ausgewählt haben. Das v4-Modell ist allgemein verfügbar und bietet JavaScript- und TypeScript-Entwickler*innen eine flexiblere und intuitivere Erfahrung. Weitere Informationen zu den Unterschieden zwischen v3 und v4 finden Sie im Migrationshandbuch.
Voraussetzungen
Für dieses Tutorial benötigen Sie Folgendes:
- Installieren Sie Visual Studio Code.
- Installieren Sie die VS Code-Erweiterung Azure Functions.
- Installieren Sie die VS Code-Erweiterungsversion
1.10.4
oder höher von Azure Functions.
- Stellen Sie sicher, dass Sie über die neueste Version der Azure Functions Core Tools verfügen.
- Stellen Sie sicher, dass Version
v4.0.5382
oder höher der Azure Functions Core Tools installiert ist.
- Für Durable Functions ist ein Azure-Speicherkonto erforderlich. Sie benötigen ein Azure-Abonnement.
- Vergewissern Sie sich, dass Sie Version 16.x oder höher von Node.js installiert haben.
- Vergewissern Sie sich, dass Sie Version 18.x oder höher von Node.js installiert haben.
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.
Drücken Sie in Visual Studio Code F1 (oder STRG/BEFEHLSTASTE+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.Wählen Sie einen leeren Ordner für Ihr Projekt und anschließend Auswählen aus.
Geben Sie gemäß der Eingabeaufforderungen die folgenden Informationen ein:
Prompt Wert BESCHREIBUNG Auswählen einer Sprache für Ihr Funktions-App-Projekt JavaScript Erstellen Sie ein lokales Node.js-Functions-Projekt. Auswählen eines JavaScript-Programmiermodells Modell V3 Wählen Sie das V3-Programmiermodell aus. „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.
Geben Sie gemäß der Eingabeaufforderungen die folgenden Informationen ein:
Prompt Wert BESCHREIBUNG Auswählen einer Sprache für Ihr Funktions-App-Projekt JavaScript Erstellen Sie ein lokales Node.js-Functions-Projekt. Auswählen eines JavaScript-Programmiermodells Modell V4 Wählen Sie das V4-Programmiermodell aus. „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.
Installieren des Durable Functions-npm-Pakets
Wenn Sie in einer Node.js-Funktionen-App mit Durable Functions arbeiten möchten, verwenden Sie eine Bibliothek namens durable-functions
.
Um das V4-Programmiermodell verwenden zu können, müssen Sie die Vorschauversion v3.x
von durable-functions
installieren.
- Verwenden Sie das Menü Ansicht oder STRG+UMSCHALT+`, um in VS Code ein neues Terminal zu öffnen.
- Installieren Sie das
durable-functions
npm-Paket, indem Sienpm install durable-functions
im Stammverzeichnis der Funktions-App ausführen.
- Installieren Sie die Vorschauversion
durable-functions
des npm-Pakets, indem Sienpm install durable-functions@preview
im Stammverzeichnis der Funktions-App ausführen.
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.
Suchen Sie in der Befehlspalette den Befehl
Azure Functions: Create Function...
, und wählen Sie ihn aus.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. Wählen Sie einen dauerhaften Speichertyp aus. Azure Storage (Standard) Wählen Sie das Speicher-Back-End aus, das für Durable Functions verwendet wird. 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/index.js, um die Orchestratorfunktion anzuzeigen. Mit jedem Aufruf von context.df.callActivity
wird eine Aktivitätsfunktion namens Hello
aufgerufen.
Fügen Sie als Nächstes die referenzierte Aktivitätsfunktion Hello
hinzu.
Aktivitätsfunktion
Suchen Sie in der Befehlspalette den Befehl
Azure Functions: Create Function...
, und wählen Sie ihn aus.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/index.js, um zu sehen, dass sie einen Namen als Eingabe akzeptiert und eine Begrüßung zurückgibt. Eine Aktivitätsfunktion ist der Ort, an dem Sie „die eigentliche Arbeit“ in Ihrem Workflow ausführen: Aufgaben wie einen Datenbankaufruf oder eine nicht deterministische Berechnung.
Abschließend fügen Sie noch eine per HTTP ausgelöste Funktion hinzu, durch die die Orchestrierung gestartet wird.
Clientfunktion (HTTP-Starter)
Suchen Sie in der Befehlspalette den Befehl
Azure Functions: Create Function...
, und wählen Sie ihn aus.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 DurableFunctionsHttpStart 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 DurableFunctionsHttpStart/index.js, um zu sehen, dass client.startNew
zum Starten einer neuen Orchestrierung verwendet wird. Anschließend wird client.createCheckStatusResponse
verwendet, um eine HTTP-Antwort mit URLs zurückzugeben, 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.
Einer der Vorteile des V4-Programmiermodells ist die Flexibilität, an welcher Stelle Sie Ihre Funktionen schreiben. Im V4-Modell können Sie eine einzelne Vorlage verwenden, um alle drei Funktionen in einer Datei in Ihrem Projekt zu erstellen.
Suchen Sie in der Befehlspalette den Befehl
Azure Functions: Create Function...
, und wählen Sie ihn aus.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 Datei mit einer Durable Functions-Orchestrierung, einer Aktivitätsfunktion und einer Durable Client-Starterfunktion. Auswählen eines dauerhaften Speichertyps Azure Storage (Standard) Wählen Sie das Speicher-Back-End aus, das für Durable Functions verwendet wird. Angeben eines Funktionsnamens hello Der Name, der für Ihre dauerhaften Funktionen verwendet wird.
Öffnen Sie src/functions/hello.js, um die von Ihnen erstellten Funktionen anzuzeigen.
Sie haben einen Orchestrator namens helloOrchestrator
für die Koordinierung von Aktivitätsfunktionen erstellt. Mit jedem Aufruf von context.df.callActivity
wird eine Aktivitätsfunktion namens hello
aufgerufen.
Sie haben außerdem die Aktivitätsfunktion hello
hinzugefügt, die vom Orchestrator aufgerufen wird. In der gleichen Datei können Sie erkennen, dass ein Name als Eingabe akzeptiert und eine Grußformel zurückgegeben wird. Eine Aktivitätsfunktion ist der Ort, an dem Sie „die eigentliche Arbeit“ in Ihrem Workflow ausführen: Aufgaben wie einen Datenbankaufruf oder eine nicht deterministische Berechnung.
Schließlich haben Sie eine über HTTP ausgelöste Funktion hinzugefügt, durch die eine Orchestrierung gestartet wird. In derselben Datei sehen Sie, dass client.startNew
verwendet wird, um eine neue Orchestrierung zu starten. Anschließend wird client.createCheckStatusResponse
verwendet, um eine HTTP-Antwort mit URLs zurückzugeben, 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.
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 Funktion in Visual Studio Code zum Installieren dieser Tools aufgefordert.
- Legen Sie zum Testen der Funktion einen Breakpoint im Code der Aktivitätsfunktion
Hello
(Hello/index.js) fest. Drücken Sie F5, oder wählen Sie über die Befehlspalette den BefehlDebug: Start Debugging
aus, um das Funktions-App-Projekt zu starten. Die Ausgabe der Core Tools wird im Bereich Terminal angezeigt.
- Legen Sie zum Testen der Funktion einen Breakpoint im Code der Aktivitätsfunktion
hello
(src/functions/hello.js) fest. Drücken Sie F5, oder wählen Sie über die Befehlspalette den BefehlDebug: 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.
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.
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. Kopieren Sie im Bereich Terminal den URL-Endpunkt Ihrer über HTTP ausgelösten Funktion.
- 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
.
- 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.
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.Die Anforderung fragt die Orchestrierungsinstanz der Status ab. 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" }
{ "name": "helloOrchestrator", "instanceId": "6ba3f77933b1461ea1a3828c013c9d56", "runtimeStatus": "Completed", "input": "", "customStatus": null, "output": [ "Hello, Tokyo", "Hello, Seattle", "Hello, Cairo" ], "createdTime": "2023-02-13T23:02:21Z", "lastUpdatedTime": "2023-02-13T23:02:25Z" }
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.
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.
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.
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.
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.
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.
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.
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.
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.
Wenn Sie aufgefordert werden, vorherige Bereitstellungen zu überschreiben, wählen Sie Bereitstellen aus, um Ihren Funktionscode in der neuen Funktions-App-Ressource bereitzustellen.
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.
Testen der Funktion in Azure
Hinweis
Um das V4-Knotenprogrammiermodell zu verwenden, stellen Sie sicher, dass Ihre App mit mindestens Version 4.25 der Azure Functions-Runtime ausgeführt wird.
- 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
- 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
- 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 mit Visual Studio Code eine dauerhafte JavaScript-basierte Funktions-App erstellt und veröffentlicht.