Ćwiczenie — lokalne tworzenie funkcji przy użyciu narzędzi Core Tools

Ukończone

Narzędzia Azure Functions Core Tools umożliwiają tworzenie funkcji lokalnie na własnym komputerze przez:

  • Tworzenie plików i folderów niezbędnych dla projektu funkcji.
  • Udostępnianie hosta usługi Functions uruchamianego lokalnie z katalogu głównego projektu.

Postanawiasz rozpocząć pracę lokalnie z usługą Azure Functions, opracowując funkcję, która oblicza proste zainteresowanie. W końcu można utworzyć bardziej złożone funkcje, które współpracują ze sobą i wywoływać inne usługi i bazy danych. Tworzenie funkcji wykonującej podstawowe obliczenia pożyczki przy użyciu narzędzi Core Tools jest dobrym początkiem. Chcesz również spróbować uruchomić funkcję na własnym komputerze przed opublikowaniem jej na platformie Azure. Wszystko to można zrobić w usłudze Azure Cloud Shell przy użyciu narzędzi Core Tools.

Usługa Azure Cloud Shell jest dostarczana z narzędziami Core Tools, interfejsem wiersza polecenia platformy Azure i edytorem, którego można użyć do pisania kodu. Przed kontynuowaniem wybierz pozycję Aktywuj piaskownicę powyżej.

Tworzenie lokalnego projektu usługi Azure Functions

W tym ćwiczeniu użyj usługi Cloud Shell do opracowania pierwszej funkcji języka JavaScript przy użyciu narzędzi Core Tools. Usługa Cloud Shell ma już zainstalowane poprawne wersje zarówno narzędzi Core Tools, jak i Node.js.

  1. W folderze głównym uruchom polecenie func init , aby utworzyć projekt funkcji w nowym loan-wizard folderze.

    func init loan-wizard
    
  2. Po wyświetleniu monitu o wybranie środowiska uruchomieniowego procesu roboczego wprowadź wartość 3 dla węzła.

  3. Po wyświetleniu monitu o wybranie języka wprowadź wartość 1 dla języka javascript.

    Dane wyjściowe zawierają listę plików zapisywanych na dysku, w tym następujące pliki:

    • host.json obsługuje konfigurację na poziomie aplikacji zarówno dla wystąpienia środowiska uruchomieniowego, jak i określonych typów wyzwalacza i powiązań.
    • local.settings.json ustawia zachowania tylko lokalne i ustawienia aplikacji (lokalne zmienne środowiskowe).
    • Plik package.json to plik specyficzny dla języka JavaScript, który śledzi wszystkie pakiety instalowane i używane w kodzie.
    • Pliki .gitignore i extensions.json to pliki konfiguracji używane odpowiednio przez narzędzie kontroli wersji git i program Visual Studio Code. Możesz je na razie zignorować.

Tworzenie funkcji wyzwalanej przez protokół HTTP

Nadszedł czas, aby utworzyć funkcję!

  1. W usłudze Cloud Shell przejdź do nowego loan-wizard katalogu.

    cd ~/loan-wizard
    
  2. Uruchom polecenie func new , aby uruchomić kreatora tworzenia funkcji.

    func new
    
  3. Po wyświetleniu monitu o wybranie szablonu wprowadź wartość 7 dla wyzwalacza HTTP.

  4. Po wyświetleniu monitu o podanie nazwy funkcji wyzwalacza HTTP wprowadź .simple-interest

  5. Uruchom następujące polecenie, aby otworzyć edytor usługi Cloud Shell.

    code .
    

    Screenshot showing the simple-interest folder with the function.json file open in Cloud Shell code editor.

    Kreator tworzy nowy plik w projekcie funkcji o src/functions nazwie simple-interest.js, który ma domyślną zawartość szablonu. Ten kod obsługuje model programowania Node.js w wersji 4 dla usługi Azure Functions. Pośmiń chwilę na zapoznanie się z plikami projektu przy użyciu edytora. Zrzut ekranu przedstawia rozwinięty folder z simple-interest.js otwartym w edytorze.

Implementowanie funkcji simple-interest

Domyślna implementacja funkcji utworzona przez narzędzia Core Tools w simple-interest.js szuka danych wejściowych wywoływanych name w ciągu zapytania lub treści przychodzącego żądania HTTP i zwraca ciąg Hello, [name]. Jest to dobra ilustracja użycia wyzwalacza HTTP, ale chcesz zastąpić ten kod kodem, który oblicza proste zainteresowanie z trzech parametrów wejściowych.

  1. W okienku PLIKI edytora rozwiń folder funkcji src>i wybierz simple-interest.js, aby otworzyć plik w edytorze.

  2. Zastąp pełną zawartość simple-interest.js następującym kodem:

    const { app } = require('@azure/functions');
    
    app.http('simple-interest', {
        methods: ['GET','POST'],
        authLevel: 'anonymous',
        handler: async (request, context) => {
            const principal = parseFloat(request.query.get('principal'));
            const rate = parseFloat(request.query.get('rate'));
            const term = parseFloat(request.query.get('term'));
    
          if ([principal, rate, term].some(isNaN)) {
            // If any empty or non-numeric values, return a 400 response with an
            // error message
            return {
              status: 400,
              body: "Please supply principal, rate and term in the query string"
            };
          } else {
            // Otherwise set the response body to the product of the three values
            return { body: principal * rate * term };
          }
        }
    });
    

    Ten skrypt szuka parametrów o nazwie principal, ratei term w ciągu zapytania żądania HTTP. Następnie zwraca wynik prostego obliczenia odsetek (principal * rate * term).

  3. Zapisz plik, naciskając klawisze Ctrl+S i zamykając edytor, naciskając klawisze Ctrl+Q.

Uruchamianie funkcji w usłudze Cloud Shell

Aby uruchomić nową funkcję lokalnie, aby ją wypróbować, użyj polecenia func start , aby uruchomić środowisko uruchomieniowe usługi Functions (func.exe) w tle, aby można było użyć wiersza polecenia podczas jego działania. Następnie użyj narzędzia wiersza polecenia , curlaby wchodzić w interakcję z funkcją.

Jeśli używasz narzędzi Core Tools z własnego komputera, wystarczy użyć curl drugiego okna terminalu lub przeglądarki internetowej. Dane wyjściowe wygenerowane przez narzędzia Core Tools są wyświetlane w czasie rzeczywistym w pierwszym oknie terminalu. W usłudze Cloud Shell masz ograniczenie do pojedynczego terminalu, więc musisz uruchomić narzędzia Core Tools (func.exe) w tle.

  1. Uruchom następujące polecenie, aby uruchomić hosta funkcji w trybie dyskretnym w tle.

    func start &> ~/output.txt &
    

    Podobnie jak w przypadku func newusługi , usługa Cloud Shell powinna nadal znajdować się w loan-wizard katalogu.

    Host usługi Functions zapisuje teraz swoje dane wyjściowe w pliku ~/output.txt. Możesz nadal używać wiersza polecenia, gdy jest uruchomiony.

    ps Użyj polecenia , aby sprawdzić, czy func proces jest uruchomiony.

  2. Wprowadź następujące polecenie, aby wyświetlić dziennik danych wyjściowych.

    code ~/output.txt
    

    W danych wyjściowych zostanie wyświetlony komunikat, który zawiera listę Functions: simple-interest: , jest dostępny zarówno jako żądanie GET, jak i ŻĄDANIE HTTP POST http://localhost:7071/api/simple-interest.

    Uwaga

    Jeśli zostanie wyświetlony komunikat o błędzie, wybierz klawisze Ctrl+C, aby zatrzymać hosta. Upewnij się, że zawartość pliku kodu jest taka sama jak w przykładzie.

    Ten adres URL hosta lokalnego nie jest publikowany w Internecie— jest dostępny tylko z narzędzi uruchomionych w sesji usługi Cloud Shell.

  3. Zamknij edytor, wybierając klawisze Ctrl+Q.

  4. Uruchom następujące polecenie, aby wysłać żądanie HTTP GET do uruchomionej lokalnie funkcji.

    curl "http://localhost:7071/api/simple-interest" -w "\n"
    

    Dane wyjściowe , wskazują, Please supply principal, rate and term in the query stringże nasza funkcja została pomyślnie wywołana i może zwrócić odpowiedź, ale nie wywołujesz jej zgodnie z oczekiwaniami. Należy podać parametry w ramach żądania HTTP.

  5. Ponownie wywołaj funkcję. Tym razem podaj wartość dla każdego z parametrów ciągu zapytania.

    curl "http://localhost:7071/api/simple-interest?principal=5000&rate=.035&term=36" -w "\n"
    

    Tym razem dane wyjściowe to 6300. Funkcja działa zgodnie z oczekiwaniami!

  6. Wprowadź następujące polecenie, aby ponownie wyświetlić dziennik danych wyjściowych.

    code ~/output.txt
    

    Po wpisach dziennika uruchamiania zobaczysz dołączany zestaw sygnatur czasowych wpisów dziennika za każdym razem, gdy wywołano funkcję za pomocą curlpolecenia :

    [2024-02-20T06:25:56.700Z] Executing 'Functions.simple-interest' (Reason='This function was programmatically called via the host APIs.', Id=5daf20c3-f204-41bb-a5b9-021acaf17c04)
    [2024-02-20T06:25:56.893Z] Executed 'Functions.simple-interest' (Succeeded, Id=5daf20c3-f204-41bb-a5b9-021acaf17c04, Duration=228ms)
    
    
  7. Zamknij edytor, wybierając klawisze Ctrl+Q.