Uruchamianie kodu na żądanie przy użyciu usługi Azure Functions
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ść 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 (Node.js model programowania w wersji 4).
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.
Przejdź do funkcji i jej plików
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.
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ć jednego z tych narzędzi do testowania HTTP, aby zainicjować żądanie HTTP do adresu URL punktu końcowego funkcji:
- Program Visual Studio Code z rozszerzeniem z witryny Visual Studio Marketplace
- PowerShell Invoke-RestMethod
- Microsoft Edge — narzędzie konsoli sieciowej
- Bruno
- lok
Uwaga
W przypadku scenariuszy, w których masz poufne dane, takie jak poświadczenia, wpisy tajne, tokeny dostępu, klucze interfejsu API i inne podobne informacje, upewnij się, że używasz narzędzia chroniącego dane przy użyciu niezbędnych funkcji zabezpieczeń, działa w trybie offline lub lokalnie, nie synchronizuje danych z chmurą i nie wymaga zalogowania się do konta online. Dzięki temu można zmniejszyć ryzyko ujawnienia poufnych danych publicznie.
Punkt końcowy adresu URL wyzwalacza HTTP można uzyskać, wybierając pozycję Pobierz adres URL funkcji na stronie definicji funkcji w portalu.
Monitorowanie i pulpit nawigacyjny usługi Application Insights
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 Insights. W menu Aplikacja funkcji w obszarze Ustawienia wybierz pozycję Application Insights, wybierz pozycję Włącz usługę Application Insights, a następnie wybierz pozycję Zastosuj. W oknie dialogowym wybierz pozycję Tak. Pulpit nawigacyjny usługi Application Insights umożliwia szybkie wyświetlanie historii operacji funkcji przez wyświetlenie znacznika czasu, kodu wyniku, czasu trwania i identyfikatora operacji wypełnionego przez usługę Application Insights.
Okienko dzienników przesyłania strumieniowego
Po włączeniu usługi Application Insights 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.