Ćwiczenie — Uruchamianie i testowanie funkcji platformy Azure w środowisku lokalnym
W poprzednich lekcjach przedstawiono sposób tworzenia funkcji platformy Azure bezserwerowej usługi internetowej na podstawie archetypu narzędzia Maven. Przedstawiono również sposób kompilowania i uruchamiania funkcji w usłudze Cloud Shell oraz konfigurowania środowiska powłoki w celu przetestowania funkcji.
W tym ćwiczeniu zastosujesz zdobytą wiedzę, aby otworzyć port HTTP w usłudze Cloud Shell na potrzeby testowania funkcji. Następnie skompiluj i uruchom funkcję w usłudze Cloud Shell i utwórz adres URL interfejsu API w celu przetestowania funkcji przy użyciu przeglądarki internetowej.
Otwieranie portu HTTP na potrzeby testowania
Zanim będzie można zdalnie przetestować funkcję, musisz otworzyć port, aby żądania HTTP zostały zamapowane na funkcję. Ta akcja generuje publiczny adres URL, którego użyjesz w dalszej części tego ćwiczenia do przetestowania funkcji.
W usłudze Azure Cloud Shell użyj następującego polecenia cURL, aby otworzyć port HTTP na potrzeby testowania:
curl -X POST http://localhost:8888/openPort/7071
Po otwarciu portu zostanie wyświetlona odpowiedź JSON podobna do następującego przykładu:
{"message":"Port 7071 is open","url":"https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/"}
Odpowiedź JSON jest połączona w jeden wiersz, jak pokazano w poprzednim przykładzie. W następnym przykładzie pokazano jednak, jak wyglądałaby odpowiedź JSON, gdyby została sformatowana:
{ "message": "Port 7071 is open", "url": "https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/" }
Ten przykład powinien ułatwić Ci zapoznanie się z danymi zawartymi w odpowiedzi.
Skopiuj adres URL z odpowiedzi JSON w swoim wystąpieniu usługi Cloud Shell. W dalszej części tego ćwiczenia użyjesz tego adresu URL do przetestowania funkcji w przeglądarce internetowej.
Kompilowanie i uruchamianie funkcji w usłudze Cloud Shell
Po otwarciu portu na potrzeby testowania możesz skompilować i uruchomić funkcję.
W usłudze Azure Cloud Shell przejdź do folderu głównego aplikacji. Na przykład:
cd ~/event-reporting
Użyj następującego polecenia narzędzia Maven, aby wyczyścić katalog projektu i skompilować funkcję:
mvn clean package
Narzędzie Maven wyświetla stan uruchomienia procesu kompilacji. Za pierwszym razem, gdy tworzysz funkcję, narzędzie Maven pobiera dziesiątki plików pomocniczych; te pliki są zależnościami wymienionymi w plikach pom.xml i host.json . Poniższy fragment to skrócony przykład pomyślnej kompilacji:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Azure Java Functions 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] . . . [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 8.509 s [INFO] Finished at: 2020-01-01T04:55:05+00:00 [INFO] Final Memory: 57M/306M [INFO] ------------------------------------------------------------------------
Gdy narzędzie Maven zakończy kompilowanie i pakowanie funkcji, użyj następującego polecenia narzędzia Maven, aby uruchomić funkcję:
mvn azure-functions:run
Program Maven wyświetla stan uruchomienia procesu uruchamiania. Poniższy fragment to skrócony przykład pomyślnego uruchomienia:
[INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building Azure Java Functions 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- azure-functions-maven-plugin:1.4.1:run (default-cli) @ event-reporting --- [INFO] Azure Function App's staging directory found at: /home/user/event-reporting/target/azure-functions/event-reporting-20200101063700664 [INFO] Azure Functions Core Tools found. %%%%%% %%%%%% @ %%%%%% @ @@ %%%%%% @@ @@@ %%%%%%%%%%% @@@ @@ %%%%%%%%%% @@ @@ %%%% @@ @@ %%% @@ @@ %% @@ %% % Azure Functions Core Tools (2.7.2184 Commit hash: 5afacc827c2848e4debc23bb96604f1ffce09cc7) Function Runtime Version: 2.0.12961.0 . . . Hosting environment: Production Content root path: /home/user/event-reporting/target/azure-functions/event-reporting-20200101063700664 Now listening on: http://0.0.0.0:7071 Application started. Press Ctrl+C to shut down. Http Functions: HttpExample: [GET,POST] http://localhost:7071/api/HttpExample
Funkcja bezserwerowa nasłuchuje teraz żądań HTTP.
Skopiuj część adresu URL po porcie HTTP, na przykład:
/api/HttpExample
Ten fragment adresu URL jest używany w następnej sekcji tego ćwiczenia, aby przetestować funkcję w przeglądarce internetowej.
Testowanie funkcji z poziomu przeglądarki internetowej
Wcześniej w tym ćwiczeniu otwarto port HTTP na potrzeby testowania; ten port umożliwia przetestowanie aplikacji w przeglądarce internetowej. Aby to zrobić, skorzystaj z poniższych instrukcji.
Konstruowanie adresu URL dla interfejsu API funkcji:
Pobierz adres URL skopiowany wcześniej, w sekcji Otwieranie portu HTTP na potrzeby testowania tego ćwiczenia, na przykład:
https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/
Dodaj fragment adresu URL interfejsu API funkcji skopiowany wcześniej, w sekcji Kompilowanie i uruchamianie funkcji w usłudze Cloud Shell tego ćwiczenia, na przykład:
https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/api/HttpExample
Dołącz ciąg zapytania przekazujący imię do adresu URL interfejsu API, na przykład:
https://gateway.westus.console.azure.com/n/cc-12345678/cc-12345678/proxy/7071/api/HttpExample?name=Bob
Skopiuj ten w pełni skonstruowany adres URL do użycia w następnych krokach.
Otwórz nową kartę w przeglądarce internetowej i wklej w pełni skonstruowany adres URL z poprzednich kroków w polu adresu.
Gdy poinstruujesz przeglądarkę internetową o zażądanie adresu URL, zobaczysz komunikat w postaci zwykłego tekstu zwrócony do przeglądarki internetowej, który jest spersonalizowany pod kątem nazwy przekazanej w ciągu zapytania. Na przykład:
Hello, Bob
W usłudze Azure Cloud Shell powinien być widoczny komunikat o stanie podobny do tego w poniższym przykładzie, wskazujący, że żądanie zostało pomyślnie przetworzone:
[1/1/20 7:08:11 AM] Executing HTTP request: { [1/1/20 7:08:11 AM] "requestId": "12345678-1234-1234-1234-123456789abc", [1/1/20 7:08:11 AM] "method": "GET", [1/1/20 7:08:11 AM] "uri": "/api/HttpExample" [1/1/20 7:08:11 AM] } [1/1/20 7:08:12 AM] Executing 'Functions.HttpExample' (Reason='This function was programmatically called via the host APIs.', Id=12345678-1234-1234-1234-123456789abc) [1/1/20 7:08:12 AM] Java HTTP trigger processed a request. [1/1/20 7:08:12 AM] Function "HttpExample" (Id: 12345678-1234-1234-1234-123456789abc) invoked by Java Worker [1/1/20 7:08:12 AM] Host lock lease acquired by instance ID '00000000000000000000000052DF09EB'. [1/1/20 7:08:12 AM] Executed 'Functions.HttpExample' (Succeeded, Id=12345678-1234-1234-1234-123456789abc) [1/1/20 7:08:13 AM] Executed HTTP request: { [1/1/20 7:08:13 AM] "requestId": "12345678-1234-1234-1234-123456789abc", [1/1/20 7:08:13 AM] "method": "GET", [1/1/20 7:08:13 AM] "uri": "/api/HttpExample", [1/1/20 7:08:13 AM] "identities": [ [1/1/20 7:08:13 AM] { [1/1/20 7:08:13 AM] "type": "WebJobsAuthLevel", [1/1/20 7:08:13 AM] "level": "Admin" [1/1/20 7:08:13 AM] } [1/1/20 7:08:13 AM] ], [1/1/20 7:08:13 AM] "status": 200, [1/1/20 7:08:13 AM] "duration": 1759 [1/1/20 7:08:13 AM] }
Jeśli nie widzisz żadnych błędów, pomyślnie przetestowano funkcję lokalnie.
Przed przejściem dalej wróć do usługi Cloud Shell i naciśnij klawisze Ctrl+C, aby zamknąć serwer testowy.
W następnej lekcji dowiesz się, jak wdrożyć funkcję w usłudze Azure Functions.