Uruchamianie kodu na żądanie przy użyciu usługi Azure Functions

Ukończone

Teraz, gdy utworzyliśmy aplikację funkcji, przyjrzyjmy się sposobom kompilowania, konfigurowania i wykonywania funkcji. Wykonamy naszą funkcję w następnym ćwiczeniu, więc nie trzeba wykonywać żadnych zadań w tej lekcji.

Wyzwalacze

Funkcje są sterowane zdarzeniami, co oznacza, że są uruchamiane w odpowiedzi na zdarzenie. Typ zdarzenia uruchamiającego funkcję jest nazywany wyzwalaczem. Każda funkcja musi być skonfigurowana przy użyciu dokładnie jednego wyzwalacza.

Wykonywanie funkcji można wyzwolić przy użyciu żądań HTTP, zaplanowanego czasomierza i zdarzeń z następujących usług platformy Azure:

Usługa platformy Azure Opis wyzwalacza
Blob Storage Uruchamia funkcję po wykryciu nowego lub zaktualizowanego obiektu blob.
Azure Cosmos DB Uruchamia funkcję po wykryciu wstawień i aktualizacji.
Event Grid Uruchamia funkcję po odebraniu zdarzenia z usługi Event Grid.
Event Hubs Uruchamia funkcję po odebraniu zdarzenia z usługi Event Hubs.
Queue Storage Uruchamia funkcję po otrzymaniu nowego elementu w kolejce. Komunikat w kolejce jest przekazywany do funkcji jako dane wejściowe.
Service Bus Uruchamia funkcję w odpowiedzi na komunikaty z kolejki usługi Service Bus.

Powiązania

Powiązanie to deklaratywny sposób łączenia danych i usług z funkcją. Powiązania współdziałają z różnymi źródłami danych, co oznacza, że nie trzeba pisać kodu w funkcji w celu nawiązania połączenia ze źródłami danych i zarządzania połączeniami. Platforma automatycznie obsługuje te złożone operacje w ramach kodu powiązania. Każde powiązanie ma kierunek: Kod odczytuje dane z powiązań wejściowych i zapisuje dane w powiązaniach wyjściowych . Każda funkcja może zawierać dowolną liczbę powiązań w celu zarządzania danymi wejściowymi i wyjściowymi przetwarzanymi przez tę funkcję (może też nie zawierać żadnych powiązań).

Wyzwalacz to typ powiązania wejściowego, który ma możliwość zainicjowania wykonywania kodu.

Platforma Azure udostępnia wiele powiązań, które umożliwiają łączenie z różnymi usługami magazynu i obsługi komunikatów.

Definiowanie przykładowego powiązania

Przyjrzyjmy się przykładowi konfigurowania funkcji z powiązaniem wejściowym (wyzwalaczem) i powiązaniem wyjściowym. Załóżmy, że chcemy napisać nowy wiersz do usługi Azure Table Storage za każdym razem, gdy w usłudze Azure Queue Storage pojawi się nowy komunikat. Ten scenariusz można zaimplementować przy użyciu wyzwalacza usługi Azure Queue Storage i powiązania wyjściowego usługi Azure Table Storage.

Poniższy fragment kodu to plik function.json na potrzeby tego scenariusza.

{
  "bindings": [
    {
      "name": "order",
      "type": "queueTrigger",
      "direction": "in",
      "queueName": "myqueue-items",
      "connection": "MY_STORAGE_ACCT_APP_SETTING"
    },
    {
      "name": "$return",
      "type": "table",
      "direction": "out",
      "tableName": "outTable",
      "connection": "MY_TABLE_STORAGE_ACCT_APP_SETTING"
    }
  ]
}

Nasza konfiguracja JSON określa, że nasza funkcja jest wyzwalana po dodaniu komunikatu do kolejki o nazwie myqueue-items. Zwracana wartość naszej funkcji jest następnie zapisywana w tabeli outTable w usłudze Azure Table Storage.

W przypadku funkcji programu PowerShell zapisywanie w powiązaniach danych wyjściowych jest jawne przy użyciu polecenia cmdlet Push-OutputBinding.

Ten przykład jest prostą ilustracją sposobu, w jaki możemy skonfigurować powiązania dla funkcji. Możemy zmienić dane wyjściowe na wiadomość e-mail przy użyciu powiązania usługi SendGrid lub umieścić zdarzenie w usłudze Service Bus, aby powiadomić inny składnik w naszej architekturze. Możemy nawet mieć wiele powiązań wyjściowych, aby wypychać dane do różnych usług.

Napiwek

Aby wyświetlić i edytować zawartość pliku function.json w witrynie Azure Portal, na stronie głównej wybierz aplikację funkcji, a następnie w okienku po prawej stronie wybierz pozycję Widok JSON. Widok JSON zasobu wyświetla identyfikator zasobu i edytowalny kod JSON. Aby zamknąć widok JSON, wybierz znak X w prawym górnym rogu okienka.

Nie wszystkie języki obsługiwane przez funkcje używają pliku function.json do definiowania funkcji.

Tworzenie funkcji w witrynie Azure Portal

Usługa Azure Functions ma wstępnie zdefiniowane szablony funkcji, które są oparte na określonym typie wyzwalacza. Te szablony w wybranym języku ułatwiają rozpoczęcie tworzenia pierwszej funkcji.

Ten moduł nie jest obsługiwany dla wszystkich języków obsługiwanych przez usługę Functions, a sam portal nie obsługuje tworzenia funkcji we wszystkich językach obsługiwanych przez funkcje.

W przypadku obsługiwanych języków używających pliku function.json do definiowania funkcji można tworzyć i edytować te funkcje bezpośrednio w witrynie Azure Portal. Te języki obsługiwane przez portal obejmują: JavaScript, PowerShell, Python i C# Script (csx). Języki definiujące funkcje bezpośrednio w samym kodzie muszą być opracowywane poza portalem i wdrażane na platformie Azure. Te nieportal obsługiwane języki to: C#, Java, Python (model programowania w wersji 2) i JavaScript/TypeScript (Model programowania Node.js v4).

Szablony funkcji

Podczas tworzenia pierwszej funkcji w portalu można wybrać wstępnie zdefiniowany wyzwalacz dla funkcji. Na podstawie wybranych opcji platforma Azure generuje domyślny kod i informacje o konfiguracji, takie jak tworzenie wpisu dziennika zdarzeń po odebraniu danych wejściowych.

Wybranie szablonu w okienku Dodawanie funkcji zapewnia łatwy dostęp do najczęściej używanych środowisk programistycznych, wyzwalaczy i zależności. Podczas tworzenia funkcji w witrynie Azure Portal można wybrać spośród ponad 20 szablonów. Po utworzeniu możesz jeszcze bardziej dostosować kod.

Podczas tworzenia funkcji na podstawie szablonu tworzone są kilka plików, w tym plik konfiguracji, function.json i plik kodu źródłowego index.js.

Funkcje można tworzyć lub edytować dla aplikacji funkcji, wybierając pozycję Funkcje w kategorii Funkcje z menu Aplikacja funkcji.

Po wybraniu funkcji utworzonej w aplikacji funkcji zostanie otwarte okienko Funkcja. Wybierając pozycję Kod i testowanie z menu Funkcja, masz dostęp do akcji na pasku poleceń, aby przetestować i uruchomić kod, zapisać lub odrzucić wprowadzone zmiany lub uzyskać opublikowany adres URL. Wybierając pozycję Test/Uruchom na pasku poleceń, można uruchamiać przypadki użycia dla żądań zawierających ciągi zapytania i wartości. Ścieżka funkcji powyżej pola kodu wyświetla nazwę otwartego pliku. Możesz wybrać konkretny plik z listy rozwijanej, aby przetestować lub edytować, na przykład function.json.

Screenshot of the function code and test editor showing the expanded Test/Run view, with menu options highlighted.

Na poprzedniej ilustracji okienko po prawej stronie zawiera karty Dane wejściowe i wyjściowe . Wybranie karty Dane wejściowe umożliwia skompilowanie i przetestowanie funkcji przez dodanie parametrów zapytania i podanie wartości dla ciągu zapytania. Na karcie Dane wyjściowe zostaną wyświetlone wyniki żądania.

Testowania funkcji platformy Azure

Po utworzeniu funkcji w portalu należy ją przetestować. Istnieją dwa podejścia:

  • Testowanie go w portalu
  • Ręczne uruchamianie

Testowanie w witrynie Azure Portal

Witryna Azure Portal także udostępnia wygodny sposób testowania funkcji. Jak opisano wcześniej, na poprzednim zrzucie ekranu. Po wybraniu pozycji Uruchom w tym okienku wyniki zostaną automatycznie wyświetlone na karcie Dane wyjściowe , a w okienku Dzienniki zostanie wyświetlony stan.

Ręczne uruchamianie funkcji

Funkcję można uruchomić, wyzwalając ręcznie skonfigurowany wyzwalacz. Jeśli na przykład używasz wyzwalacza HTTP, możesz użyć narzędzia, takiego jak Postman lub cURL, aby zainicjować żądanie HTTP do adresu URL punktu końcowego funkcji, który jest dostępny z definicji funkcji (Pobierz adres URL funkcji).

Monitorowanie i pulpit nawigacyjny Szczegółowe informacje aplikacji

Możliwość monitorowania funkcji ma zasadnicze znaczenie podczas opracowywania i w środowisku produkcyjnym. Witryna Azure Portal udostępnia pulpit nawigacyjny monitorowania, który można włączyć, włączając integrację usługi Application Szczegółowe informacje. W menu Aplikacja funkcji w obszarze Ustawienia wybierz pozycję Aplikacja Szczegółowe informacje, wybierz pozycję Włącz Szczegółowe informacje aplikacji, a następnie wybierz pozycję Zastosuj. W oknie dialogowym wybierz pozycję Tak. Pulpit nawigacyjny aplikacji Szczegółowe informacje umożliwia szybkie wyświetlanie historii operacji funkcji przez wyświetlenie znacznika czasu, kodu wyniku, czasu trwania i identyfikatora operacji wypełnionego przez aplikację Szczegółowe informacje.

Screenshot showing the HTTP function Application Insights dashboard with function results, corresponding HTTP status codes, and the Monitoring menu items highlighted.

Okienko dzienników przesyłania strumieniowego

Po włączeniu Szczegółowe informacje aplikacji w witrynie Azure Portal możesz dodać instrukcje rejestrowania do funkcji na potrzeby debugowania. Wywoływane metody dla każdego języka są przekazywane obiekt "rejestrowania", który może służyć do dodawania informacji dziennika do okienka Dzienniki w okienku Kod i test podczas uruchamiania testu.

Zapisz w dziennikach z kodu przy użyciu log metody w context obiekcie, która jest przekazywana do programu obsługi. Poniższy przykład zapisuje dane na domyślnym poziomie dziennika (informacje):

context.log('Enter your logging statement here');

Zapisz dzienniki z kodu przy użyciu Write-Host polecenia cmdlet , jak pokazano w poniższym przykładzie:

Write-Host "Enter your logging statement here"

Błędy, błędy, ostrzeżenia i anomalie

Możesz użyć metryk lub opcji z kategorii Badanie w menu Funkcja, aby monitorować wydajność, diagnozować błędy lub konfigurować dziesiątki wstępnie zdefiniowanych skoroszytów do zarządzania aplikacją funkcji. Wszystko, od błędów kompilacji i ostrzeżeń w kodzie, po statystyki użycia według roli.