Tworzenie pierwszej funkcji trwałej w języku Java Script

Durable Functions to rozszerzenie usługi Azure Functions umożliwiające zapisywanie funkcji stanowych w środowisku bezserwerowym. Rozszerzenie zarządza stanem, punktami kontrolnymi i ponownym uruchamianiem.

W tym artykule przedstawiono użycie rozszerzenia programu Visual Studio Code dla usługi Azure Functions w celu lokalnego utworzenia i przetestowania funkcji trwałej „hello world”. Ta funkcja będzie aranżować i łączyć w łańcuchy wywołania do innych funkcji. Kod funkcji zostanie następnie opublikowany na platformie Azure.

Ważne

Zawartość tego artykułu zmienia się w zależności od wybranego modelu programowania Node.js w selektorze w górnej części strony. Model w wersji 4 jest ogólnie dostępny i ma bardziej elastyczne i intuicyjne środowisko dla deweloperów języka JavaScript i Języka TypeScript. Dowiedz się więcej o różnicach między wersjami 3 i v4 w przewodniku migracji.

Zrzut ekranu przedstawiający okno przeglądarki Microsoft Edge. W oknie przedstawiono dane wyjściowe wywoływania prostej funkcji trwałej na platformie Azure.

Wymagania wstępne

W celu ukończenia tego samouczka:

  • Zainstaluj wersję 1.10.4 rozszerzenia programu VS Code usługi Azure Functions lub nowszą.
  • Rozszerzenie Durable Functions wymaga konta usługi Azure Storage. Wymagana jest subskrypcja platformy Azure.
  • Upewnij się, że masz zainstalowaną wersję 16.x+ Node.js .
  • Upewnij się, że masz zainstalowaną wersję 18.x+ Node.js .

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Tworzenie projektu lokalnego

W tej sekcji użyjesz programu Visual Studio Code do utworzenia lokalnego projektu usługi Azure Functions.

  1. W programie Visual Studio Code naciśnij klawisz F1 (lub Ctrl/Cmd+Shift+P), aby otworzyć paletę poleceń. W palecie poleceń wyszukaj i wybierz pozycję Azure Functions: Create New Project....

    Zrzut ekranu przedstawiający paletę poleceń programu Visual Studio Code. Polecenie zatytułowane

  2. Wybierz pustą lokalizację folderu dla projektu i wybierz pozycję Wybierz.

  1. Po wyświetleniu monitów podaj następujące informacje:

    Monit Wartość Opis
    Wybieranie języka projektu aplikacji funkcji JavaScript Utwórz lokalny projekt usługi Node.js Functions.
    Wybieranie modelu programowania JavaScript Model V3 Wybierz model programowania w wersji 3.
    Wybierz wersję Usługa Azure Functions w wersji 4 Ta opcja jest widoczna tylko wtedy, gdy narzędzia Core Tools nie są jeszcze zainstalowane. W takim przypadku narzędzia Core Tools są instalowane po raz pierwszy podczas uruchamiania aplikacji.
    Wybieranie szablonu dla pierwszej funkcji projektu Pomiń teraz
    Wybierz sposób otwierania projektu Otwórz w bieżącym oknie Otwiera ponownie program VS Code w wybranym folderze.
  1. Po wyświetleniu monitów podaj następujące informacje:

    Monit Wartość Opis
    Wybieranie języka projektu aplikacji funkcji JavaScript Utwórz lokalny projekt usługi Node.js Functions.
    Wybieranie modelu programowania JavaScript Model V4 Wybierz model programowania w wersji 4.
    Wybierz wersję Usługa Azure Functions w wersji 4 Ta opcja jest widoczna tylko wtedy, gdy narzędzia Core Tools nie są jeszcze zainstalowane. W takim przypadku narzędzia Core Tools są instalowane po raz pierwszy podczas uruchamiania aplikacji.
    Wybieranie szablonu dla pierwszej funkcji projektu Pomiń teraz
    Wybierz sposób otwierania projektu Otwórz w bieżącym oknie Otwiera ponownie program VS Code w wybranym folderze.

W razie potrzeby program Visual Studio Code instaluje narzędzia Azure Functions Core Tools. Tworzy również projekt aplikacji funkcji w folderze. Ten projekt zawiera pliki konfiguracji host.json i local.settings.json .

Plik package.json jest również tworzony w folderze głównym.

Instalowanie pakietu npm rozszerzenia Durable Functions

Aby pracować z rozszerzeniem Durable Functions w aplikacji funkcji Node.js, należy użyć biblioteki o nazwie durable-functions.

Aby użyć modelu programowania w wersji 4, należy zainstalować wersję zapoznawcza v3.x programu durable-functions.

  1. Użyj menu Widok lub Ctrl + Shift + ' , aby otworzyć nowy terminal w programie VS Code.
  1. Zainstaluj pakiet npm durable-functions, uruchamiając polecenie npm install durable-functions w katalogu głównym aplikacji funkcji.
  1. durable-functions Zainstaluj wersję zapoznawcza pakietu npm, uruchamiając polecenie npm install durable-functions@preview w katalogu głównym aplikacji funkcji.

Tworzenie funkcji

Najbardziej podstawowa aplikacja Durable Functions zawiera trzy funkcje:

  • Funkcja orchestrator — opisuje przepływ pracy, który organizuje inne funkcje.
  • Funkcja Activity — wywoływana przez funkcję orkiestratora, wykonuje pracę i opcjonalnie zwraca wartość.
  • Funkcja klienta — zwykła funkcja platformy Azure, która uruchamia funkcję orkiestratora. W tym przykładzie użyto funkcji wyzwalanej przez protokół HTTP.

Orchestrator, funkcja

Szablon służy do tworzenia kodu funkcji trwałej w projekcie.

  1. W palecie poleceń wyszukaj i wybierz pozycję Azure Functions: Create Function....

  2. Po wyświetleniu monitów podaj następujące informacje:

    Monit Wartość Opis
    Wybieranie szablonu dla funkcji Orkiestrator rozszerzenia Durable Functions Tworzenie orkiestracji rozszerzenia Durable Functions
    Wybierz trwały typ magazynu. Azure Storage (ustawienie domyślne) Wybierz zaplecze magazynu używane dla rozszerzenia Durable Functions.
    Podaj nazwę funkcji HelloOrchestrator Nazwa funkcji trwałej

Dodano orkiestrator do koordynowania funkcji działania. Otwórz aplikację HelloOrchestrator/index.js , aby wyświetlić funkcję orkiestratora. Każde wywołanie do wywołania context.df.callActivity wywołuje funkcję działania o nazwie Hello.

Następnie dodasz przywołyną Hello funkcję działania.

Activity, funkcja

  1. W palecie poleceń wyszukaj i wybierz pozycję Azure Functions: Create Function....

  2. Po wyświetleniu monitów podaj następujące informacje:

    Monit Wartość Opis
    Wybieranie szablonu dla funkcji Działanie rozszerzenia Durable Functions Tworzenie funkcji działania
    Podaj nazwę funkcji Hello (Cześć) Nazwa funkcji działania

Dodano Hello funkcję działania wywoływaną przez koordynatora. Otwórz pozycję Hello/index.js , aby zobaczyć, że przyjmuje nazwę jako dane wejściowe i zwraca powitanie. Funkcja działania polega na tym, że wykonujesz "prawdziwą pracę" w przepływie pracy: na przykład wykonywanie wywołania bazy danych lub wykonywanie pewnych obliczeń niedeterministycznych.

Na koniec dodasz funkcję wyzwalaną przez protokół HTTP, która uruchamia orkiestrację.

Funkcja klienta (starter HTTP)

  1. W palecie poleceń wyszukaj i wybierz pozycję Azure Functions: Create Function....

  2. Po wyświetleniu monitów podaj następujące informacje:

    Monit Wartość Opis
    Wybieranie szablonu dla funkcji Trwały start HTTP usługi Durable Functions Tworzenie funkcji startowej HTTP
    Podaj nazwę funkcji DurableFunctionsHttpStart Nazwa funkcji działania
    Poziom autoryzacji Anonimowe W celach demonstracyjnych zezwól na wywoływanie funkcji bez uwierzytelniania

Dodano funkcję wyzwalaną przez protokół HTTP, która uruchamia aranżację. Otwórz plik DurableFunctionsHttpStart/index.js , aby zobaczyć, że używa client.startNew go do rozpoczęcia nowej aranżacji. Następnie służy client.createCheckStatusResponse do zwracania odpowiedzi HTTP zawierającej adresy URL, których można użyć do monitorowania nowej aranżacji i zarządzania nią.

Masz teraz aplikację Durable Functions, którą można uruchomić lokalnie i wdrożyć na platformie Azure.

Jedną z zalet modelu programowania w wersji 4 jest elastyczność pisania funkcji. W modelu w wersji 4 można użyć jednego szablonu, aby utworzyć wszystkie trzy funkcje w jednym pliku w projekcie.

  1. W palecie poleceń wyszukaj i wybierz pozycję Azure Functions: Create Function....

  2. Po wyświetleniu monitów podaj następujące informacje:

    Monit Wartość Opis
    Wybieranie szablonu dla funkcji Orkiestrator rozszerzenia Durable Functions Utwórz plik z orkiestracją rozszerzenia Durable Functions, funkcją Activity i funkcją startową durable client.
    Wybieranie trwałego typu magazynu Azure Storage (ustawienie domyślne) Wybierz zaplecze magazynu używane dla rozszerzenia Durable Functions.
    Podaj nazwę funkcji hello Nazwa używana dla funkcji trwałych

Otwórz plik src/functions/hello.js , aby wyświetlić utworzone funkcje.

Utworzono orkiestrator o nazwie helloOrchestrator w celu koordynowania funkcji działania. Każde wywołanie w celu wywołania context.df.callActivity wywołuje funkcję działania o nazwie hello.

Dodano również hello funkcję działania wywoływaną przez koordynatora. W tym samym pliku widać, że przyjmuje nazwę jako dane wejściowe i zwraca powitanie. Funkcja działania polega na tym, że wykonujesz "prawdziwą pracę" w przepływie pracy: na przykład wykonywanie wywołania bazy danych lub wykonywanie pewnych obliczeń niedeterministycznych.

Na koniec dodano również funkcję wyzwalaną przez protokół HTTP, która uruchamia orkiestrację. W tym samym pliku widać, że używa client.startNew go do rozpoczęcia nowej aranżacji. Następnie służy client.createCheckStatusResponse do zwracania odpowiedzi HTTP zawierającej adresy URL, których można użyć do monitorowania nowej aranżacji i zarządzania nią.

Masz teraz aplikację Durable Functions, którą można uruchomić lokalnie i wdrożyć na platformie Azure.

Lokalne testowanie funkcji

Podstawowe narzędzia usługi Azure Functions umożliwiają uruchamianie projektu usługi Azure Functions na lokalnym komputerze deweloperskim. Monit o zainstalowanie tych narzędzi pojawia się przy pierwszym uruchomieniu funkcji w programie Visual Studio Code.

  1. Aby przetestować funkcję, ustaw punkt przerwania w Hello kodzie funkcji działania (Hello/index.js). Naciśnij klawisz F5 lub wybierz z Debug: Start Debugging palety poleceń, aby uruchomić projekt aplikacji funkcji. Dane wyjściowe z pakietu Core Tools są wyświetlane na panelu terminalu.
  1. Aby przetestować funkcję, ustaw punkt przerwania w hello kodzie funkcji działania (src/functions/hello.js). Naciśnij klawisz F5 lub wybierz z Debug: Start Debugging palety poleceń, aby uruchomić projekt aplikacji funkcji. Dane wyjściowe z pakietu Core Tools są wyświetlane na panelu terminalu.

Uwaga

Aby uzyskać więcej informacji na temat debugowania, zapoznaj się z diagnostyką rozszerzenia Durable Functions.

  1. Rozszerzenie Durable Functions wymaga uruchomienia konta usługi Azure Storage. Gdy program VS Code wyświetli monit o wybranie konta magazynu, wybierz pozycję Wybierz konto magazynu.

    Zrzut ekranu przedstawiający okno alertu programu Visual Studio Code. W oknie jest wyświetlany komunikat

  2. Po wyświetleniu monitów podaj następujące informacje, aby utworzyć nowe konto magazynu na platformie Azure.

    Monit Wartość Opis
    Wybieranie subskrypcji nazwa subskrypcji Wybierz subskrypcję platformy Azure
    Wybierz konto magazynu Tworzenie nowego konta magazynu
    Wprowadź nazwę nowego konta magazynu unikatowa nazwa Nazwa konta magazynu do utworzenia
    Wybieranie grupy zasobów unikatowa nazwa Nazwa grupy zasobów do utworzenia
    Wybieranie lokalizacji Region Wybierz region blisko Ciebie
  3. W panelu terminalu skopiuj punkt końcowy adresu URL funkcji wyzwalanej przez protokół HTTP.

    Zrzut ekranu przedstawiający panel terminalu programu Visual Studio Code. W terminalu są wyświetlane dane wyjściowe uruchamiania aplikacji Durable Functions lokalnie. Tabela zatytułowana

  1. Za pomocą przeglądarki lub narzędzia, takiego jak Postman lub cURL, wyślij żądanie HTTP POST do punktu końcowego adresu URL. Zastąp ostatni segment nazwą funkcji orkiestratora (HelloOrchestrator). Adres URL powinien być podobny do http://localhost:7071/api/orchestrators/HelloOrchestrator.
  1. Za pomocą przeglądarki lub narzędzia, takiego jak Postman lub cURL, wyślij żądanie HTTP POST do punktu końcowego adresu URL. Zastąp ostatni segment nazwą funkcji orkiestratora (helloOrchestrator). Adres URL powinien być podobny do http://localhost:7071/api/orchestrators/helloOrchestrator.

Odpowiedź to początkowy wynik funkcji HTTP informujący o pomyślnym rozpoczęciu orkiestracji trwałej. Nie jest to jeszcze końcowy wynik aranżacji. Odpowiedź zawiera kilka przydatnych adresów URL. Na razie wykonajmy zapytanie o stan aranżacji.

  1. Skopiuj wartość adresu URL i statusQueryGetUri wklej ją na pasku adresu przeglądarki i wykonaj żądanie. Alternatywnie możesz również nadal używać narzędzia Postman do wystawiania żądania GET.

    Żądanie wysyła zapytanie do wystąpienia orkiestracji dla stanu. Otrzymasz ostateczną odpowiedź, która pokazuje, że wystąpienie zostało ukończone i zawiera dane wyjściowe lub wyniki funkcji trwałej. Wygląda na to:

    {
        "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"
    }
    
  2. Aby zatrzymać debugowanie, naciśnij klawisze Shift + F5 w programie VS Code.

Gdy będziesz mieć pewność, że funkcja działa poprawnie na komputerze lokalnym, możesz opublikować projekt na platformie Azure.

Logowanie się do platformy Azure

Aby można było utworzyć zasoby platformy Azure lub opublikować aplikację, musisz zalogować się na platformie Azure.

  1. Jeśli jeszcze nie zalogowałeś się, wybierz ikonę platformy Azure na pasku działania. Następnie w obszarze Zasoby wybierz pozycję Zaloguj się do platformy Azure....

    Zrzut ekranu przedstawiający okno logowania do platformy Azure w programie VS Code.

    Jeśli już się zalogowałeś i widzisz istniejące subskrypcje, przejdź do następnej sekcji. Jeśli nie masz jeszcze konta platformy Azure, wybierz pozycję Utwórz konto platformy Azure.... Uczniowie mogą wybrać pozycję Utwórz konto platformy Azure for Students....

  2. Po wyświetleniu monitu w przeglądarce wybierz swoje konto platformy Azure i zaloguj się przy użyciu poświadczeń konta platformy Azure. Jeśli tworzysz nowe konto, możesz zalogować się po utworzeniu konta.

  3. Po pomyślnym zalogowaniu możesz zamknąć nowe okno przeglądarki. Subskrypcje należące do konta platformy Azure są wyświetlane na pasku bocznym.

Tworzenie aplikacji funkcji na platformie Azure

W tej sekcji utworzysz aplikację funkcji i powiązane zasoby w ramach subskrypcji platformy Azure.

  1. Wybierz ikonę platformy Azure na pasku działania. Następnie w obszarze Zasoby wybierz ikonę + i wybierz opcję Utwórz aplikację funkcji na platformie Azure .

    Tworzenie zasobu w subskrypcji platformy Azure

  2. Podaj następujące informacje po wyświetleniu monitów:

    Monit Wybór
    Wybierz subskrypcję Wybierz subskrypcję, która ma zostać użyta. Ten monit nie będzie wyświetlany, gdy w obszarze Zasoby jest widoczna tylko jedna subskrypcja.
    Wprowadź globalnie unikatową nazwę aplikacji funkcji Wpisz nazwę prawidłową w ścieżce adresu URL. Typ nazwy jest weryfikowany, aby upewnić się, że jest on unikatowy w usłudze Azure Functions.
    Wybieranie stosu środowiska uruchomieniowego Wybierz wersję języka, dla której uruchomiono lokalnie.
    Wybieranie lokalizacji dla nowych zasobów Aby uzyskać lepszą wydajność, wybierz region blisko Ciebie.

    Rozszerzenie pokazuje stan poszczególnych zasobów podczas ich tworzenia na platformie Azure w panelu Azure: Dziennik aktywności.

    Dziennik tworzenia zasobów platformy Azure

  3. Po zakończeniu tworzenia następujące zasoby platformy Azure są tworzone w ramach subskrypcji. Zasoby są nazwane na podstawie nazwy aplikacji funkcji:

    • Grupa zasobów, która jest kontenerem logicznym dla powiązanych zasobów.
    • Standardowe konto usługi Azure Storage, które zachowuje stan i inne informacje o projektach.
    • Aplikacja funkcji, która udostępnia środowisko do wykonywania kodu funkcji. Aplikacja funkcji umożliwia grupowanie funkcji jako jednostki logicznej w celu łatwiejszego zarządzania, wdrażania i udostępniania zasobów w ramach tego samego planu hostingu.
    • Plan usługi App Service, który definiuje podstawowy host aplikacji funkcji.
    • Wystąpienie aplikacji Szczegółowe informacje połączone z aplikacją funkcji, które śledzi użycie funkcji w aplikacji.

    Po utworzeniu aplikacji funkcji i zastosowaniu pakietu wdrożeniowego zostanie wyświetlone powiadomienie.

    Napiwek

    Domyślnie zasoby platformy Azure wymagane przez aplikację funkcji są tworzone na podstawie podanej nazwy aplikacji funkcji. Domyślnie są one również tworzone w tej samej nowej grupie zasobów z aplikacją funkcji. Jeśli chcesz dostosować nazwy tych zasobów lub ponownie użyć istniejących zasobów, musisz opublikować projekt z zaawansowanymi opcjami tworzenia.

Wdrażanie projektu na platformie Azure

Ważne

Wdrażanie w istniejącej aplikacji funkcji zawsze zastępuje zawartość tej aplikacji na platformie Azure.

  1. W obszarze Zasoby działania platformy Azure znajdź właśnie utworzony zasób aplikacji funkcji, kliknij prawym przyciskiem myszy zasób i wybierz polecenie Wdróż w aplikacji funkcji....

  2. Po wyświetleniu monitu o zastąpienie poprzednich wdrożeń wybierz pozycję Wdróż , aby wdrożyć kod funkcji w nowym zasobie aplikacji funkcji.

  3. Po zakończeniu wdrażania wybierz pozycję Wyświetl dane wyjściowe , aby wyświetlić wyniki tworzenia i wdrażania, w tym utworzone zasoby platformy Azure. Jeśli przegapisz powiadomienie, wybierz ikonę dzwonka w prawym dolnym rogu, aby zobaczyć je ponownie.

    Zrzut ekranu przedstawiający okno Wyświetl dane wyjściowe.

Testowanie funkcji na platformie Azure

Uwaga

Aby użyć modelu programowania węzłów w wersji 4, upewnij się, że aplikacja jest uruchomiona w co najmniej wersji 4.25 środowiska uruchomieniowego usługi Azure Functions.

  1. Skopiuj adres URL wyzwalacza HTTP z panelu Dane wyjściowe. Adres URL, który wywołuje funkcję wyzwalaną przez protokół HTTP, powinien mieć następujący format: https://<functionappname>.azurewebsites.net/api/orchestrators/HelloOrchestrator
  1. Skopiuj adres URL wyzwalacza HTTP z panelu Dane wyjściowe. Adres URL, który wywołuje funkcję wyzwalaną przez protokół HTTP, powinien mieć następujący format: https://<functionappname>.azurewebsites.net/api/orchestrators/helloOrchestrator
  1. Wklej nowy adres URL żądania HTTP na pasku adresu przeglądarki. Podczas korzystania z opublikowanej aplikacji powinna zostać zwrócona taka sama odpowiedź dotycząca stanu.

Następne kroki

Utworzono i opublikowano aplikację funkcji trwałej w języku JavaScript za pomocą narzędzia Visual Studio Code.