Samouczek: rozpoczynanie pracy z wyzwalaczami i powiązaniami usługi Azure Functions w usłudze Azure Redis
W tym samouczku pokazano, jak zaimplementować podstawowe wyzwalacze za pomocą usługi Azure Functions i usługi Azure Managed Redis (wersja zapoznawcza) lub Azure Cache for Redis. Przeprowadzi Cię przez proces pisania i wdrażania funkcji platformy Azure w języku C#przy użyciu programu Visual Studio Code (VS Code).
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Skonfiguruj niezbędne narzędzia.
- Konfigurowanie pamięci podręcznej i nawiązywanie z nią połączenia.
- Utwórz funkcję platformy Azure i wdróż w niej kod.
- Potwierdź rejestrowanie wyzwalaczy.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli nie masz subskrypcji platformy Azure, utwórz bezpłatne konto.
- Program Visual Studio Code
- Konfigurowanie wystąpienia usługi Azure Managed Redis (wersja zapoznawcza)
- Konfigurowanie wystąpienia usługi Azure Cache for Redis
Utwórz nowe wystąpienie usługi Azure Cache for Redis przy użyciu witryny Azure Portal lub preferowanego narzędzia interfejsu wiersza polecenia. W tym samouczku jest używane wystąpienie Zrównoważone B1 , które jest dobrym punktem wyjścia. Pamiętaj, aby wybrać to wystąpienie podczas korzystania z przewodnika Szybki start, aby rozpocząć pracę.
Ustawienia domyślne powinny wystarczyć. W tym samouczku używany jest publiczny punkt końcowy na potrzeby pokazu, ale zalecamy użycie prywatnego punktu końcowego dla wszystkich elementów w środowisku produkcyjnym.
Tworzenie pamięci podręcznej może potrwać kilka minut. Po zakończeniu procesu możesz przejść do następnej sekcji.
Konfigurowanie programu Visual Studio Code
Jeśli rozszerzenie usługi Azure Functions dla programu VS Code nie zostało jeszcze zainstalowane, wyszukaj usługę Azure Functions w menu ROZSZERZENIA , a następnie wybierz pozycję Zainstaluj. Jeśli nie masz zainstalowanego rozszerzenia języka C#, zainstaluj je również.
Przejdź do karty Azure . Zaloguj się do konta platformy Azure.
Aby zapisać projekt, który tworzysz, utwórz nowy folder lokalny na komputerze. W tym samouczku użyto usługi RedisAzureFunctionDemo jako przykładu.
Na karcie Azure utwórz nową aplikację funkcji, wybierając ikonę błyskawicy w prawym górnym rogu karty Obszar roboczy.
Wybierz pozycję Utwórz funkcję....
Wybierz utworzony folder, aby rozpocząć tworzenie nowego projektu usługi Azure Functions. Zostanie wyświetlonych kilka monitów na ekranie. Wybierz pozycję:
- Język C# jako język.
- Program .NET 8.0 Isolated LTS jako środowisko uruchomieniowe platformy .NET.
- Pomiń teraz jako szablon projektu.
Jeśli nie masz zainstalowanego zestawu .NET Core SDK, zostanie wyświetlony monit o to.
Ważne
W przypadku funkcji platformy .NET używanie izolowanego modelu procesu roboczego jest zalecane w modelu w procesie. Aby zapoznać się z porównaniem modeli procesów procesowych i izolowanych procesów roboczych, zobacz różnice między izolowanym modelem procesu roboczego a modelem procesu dla platformy .NET w usłudze Azure Functions. W tym przykładzie użyto izolowanego modelu procesu roboczego.
Upewnij się, że nowy projekt pojawi się w okienku EKSPLORATOR .
Instalowanie niezbędnego pakietu NuGet
Należy zainstalować Microsoft.Azure.Functions.Worker.Extensions.Redis
pakiet NuGet dla rozszerzenia Redis, który umożliwia używanie powiadomień o przestrzeni kluczy Redis jako wyzwalaczy w usłudze Azure Functions.
Zainstaluj ten pakiet, przechodząc do karty Terminal w programie VS Code i wprowadzając następujące polecenie:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis --prerelease
Uwaga
Pakiet Microsoft.Azure.Functions.Worker.Extensions.Redis
jest używany dla funkcji procesów izolowanych na platformie .NET. Funkcje w procesie platformy .NET i wszystkie inne języki będą używać Microsoft.Azure.WebJobs.Extensions.Redis
pakietu.
- Konfigurowanie wystąpienia usługi Azure Managed Redis
- Konfigurowanie wystąpienia usługi Azure Cache for Redis
Przejdź do nowo utworzonego wystąpienia usługi Azure Managed Redis.
Przejdź do pamięci podręcznej w witrynie Azure Portal i znajdź klucze dostępu w menu Zasób. Zapisz lub skopiuj zawartość pola podstawowego. Użyjesz go do utworzenia parametry połączenia.
Skompiluj parametry połączenia przy użyciu następującego formatu:
{your-cache-hostname}:10000,password={your-access-key},ssl=True,abortConnect=False
. Jeśli wyłączono protokół TLS/SSL, użyjssl=False
zamiast tego.Połącz się z wystąpieniem usługi Redis przy użyciu wybranej metody, takiej jak interfejs wiersza polecenia usługi Redis lub usługa Redis Insights. Aby uzyskać instrukcje dotyczące nawiązywania połączenia z wystąpieniem usługi Redis przy użyciu interfejsu wiersza polecenia usługi Redis, zobacz Używanie narzędzia wiersza polecenia Redis z usługą Azure Managed Redis.
Skonfiguruj powiadomienia dotyczące przestrzeni kluczy przy użyciu polecenia CONFIG SET :
CONFIG SET notify-keyspace-events KEA
KEA to ciąg konfiguracji, który umożliwia powiadomienia dotyczące przestrzeni kluczy dla wszystkich kluczy i zdarzeń. Aby uzyskać więcej informacji na temat ciągów konfiguracji przestrzeni kluczy, zobacz dokumentację usługi Redis.
Konfigurowanie przykładowego kodu dla wyzwalaczy usługi Redis
W programie VS Code dodaj plik o nazwie Common.cs do projektu. Ta klasa służy do analizowania serializowanej odpowiedzi JSON dla pubSubTrigger.
Skopiuj i wklej następujący kod do pliku Common.cs :
public class Common { public const string connectionString = "redisConnectionString"; public class ChannelMessage { public string SubscriptionChannel { get; set; } public string Channel { get; set; } public string Message { get; set; } } }
Dodaj plik o nazwie RedisTriggers.cs do projektu.
Skopiuj i wklej następujący przykładowy kod do nowego pliku:
using Microsoft.Extensions.Logging; using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Extensions.Redis; public class RedisTriggers { private readonly ILogger<RedisTriggers> logger; public RedisTriggers(ILogger<RedisTriggers> logger) { this.logger = logger; } // PubSubTrigger function listens to messages from the 'pubsubTest' channel. [Function("PubSubTrigger")] public void PubSub( [RedisPubSubTrigger(Common.connectionString, "pubsubTest")] Common.ChannelMessage channelMessage) { logger.LogInformation($"Function triggered on pub/sub message '{channelMessage.Message}' from channel '{channelMessage.Channel}'."); } // KeyeventTrigger function listens to key events from the 'del' operation. [Function("KeyeventTrigger")] public void Keyevent( [RedisPubSubTrigger(Common.connectionString, "__keyevent@0__:del")] Common.ChannelMessage channelMessage) { logger.LogInformation($"Key '{channelMessage.Message}' deleted."); } // KeyspaceTrigger function listens to key events on the 'keyspaceTest' key. [Function("KeyspaceTrigger")] public void Keyspace( [RedisPubSubTrigger(Common.connectionString, "__keyspace@0__:keyspaceTest")] Common.ChannelMessage channelMessage) { logger.LogInformation($"Key 'keyspaceTest' was updated with operation '{channelMessage.Message}'"); } // ListTrigger function listens to changes to the 'listTest' list. [Function("ListTrigger")] public void List( [RedisListTrigger(Common.connectionString, "listTest")] string response) { logger.LogInformation(response); } // StreamTrigger function listens to changes to the 'streamTest' stream. [Function("StreamTrigger")] public void Stream( [RedisStreamTrigger(Common.connectionString, "streamTest")] string response) { logger.LogInformation(response); } }
W tym samouczku przedstawiono wiele sposobów wyzwalania działania usługi Redis:
PubSubTrigger
, który jest wyzwalany po opublikowaniu działania w kanale Pub/Sub o nazwiepubsubTest
.KeyspaceTrigger
, który jest oparty na wyzwalaczu Pub/Sub. Użyj go, aby wyszukać zmianykeyspaceTest
klucza.KeyeventTrigger
, który jest również oparty na wyzwalaczu Pub/Sub. Użyj go, aby wyszukać dowolne użycieDEL
polecenia.ListTrigger
, który wyszukuje zmiany nalistTest
liście.StreamTrigger
, który wyszukuje zmiany w strumieniustreamTest
.
Nawiązywanie połączenia z pamięcią podręczną
Aby wyzwolić działanie usługi Redis, należy przekazać parametry połączenia wystąpienia pamięci podręcznej. Te informacje są przechowywane w pliku local.settings.json , który został automatycznie utworzony w folderze. Zalecamy użycie pliku ustawień lokalnych jako najlepszych rozwiązań w zakresie zabezpieczeń.
Aby nawiązać połączenie z pamięcią podręczną, dodaj sekcję
ConnectionStrings
w pliku local.settings.json, a następnie dodaj parametry połączenia przy użyciu parametruredisConnectionString
. Sekcja powinna wyglądać następująco:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "redisConnectionString": "<your-connection-string>" } }
Kod w Common.cs szuka tej wartości, gdy jest uruchomiony lokalnie:
public const string connectionString = "redisConnectionString";
Ważne
Ten przykład jest uproszczony dla tego samouczka. W przypadku użycia w środowisku produkcyjnym zalecamy używanie usługi Azure Key Vault do przechowywania parametry połączenia informacji lub uwierzytelniania w wystąpieniu usługi Redis przy użyciu identyfikatora Entra firmy Microsoft.
Kompilowanie i uruchamianie kodu lokalnie
Przejdź do karty Uruchamianie i debugowanie w programie VS Code i wybierz zieloną strzałkę, aby debugować kod lokalnie. Jeśli nie masz zainstalowanych podstawowych narzędzi usługi Azure Functions, zostanie wyświetlony monit o to. W takim przypadku należy ponownie uruchomić program VS Code po zainstalowaniu.
Kod powinien zostać skompilować pomyślnie. Postęp można śledzić w danych wyjściowych terminalu.
Aby przetestować funkcję wyzwalacza, spróbuj utworzyć i usunąć
keyspaceTest
klucz.Możesz użyć dowolnego sposobu, w jaki wolisz nawiązać połączenie z pamięcią podręczną. Łatwym sposobem jest użycie wbudowanego narzędzia konsolowego w portalu usługi Azure Cache for Redis. Przejdź do wystąpienia pamięci podręcznej w witrynie Azure Portal, a następnie wybierz pozycję Konsola , aby ją otworzyć.
Ważne
Narzędzie konsoli nie jest jeszcze dostępne dla usługi Azure Managed Redis. Zamiast tego rozważ użycie interfejsu wiersza polecenia redis lub narzędzia, takiego jak Redis Insight , aby uruchamiać polecenia bezpośrednio w wystąpieniu usługi Redis.
Po otwarciu konsoli spróbuj wykonać następujące polecenia:
SET keyspaceTest 1
SET keyspaceTest 2
DEL keyspaceTest
PUBLISH pubsubTest testMessage
LPUSH listTest test
XADD streamTest * name Clippy
Upewnij się, że wyzwalacze są aktywowane w terminalu.
Dodawanie powiązań usługi Redis
Powiązania dodają usprawniony sposób odczytywania lub zapisywania danych przechowywanych w wystąpieniu usługi Redis. Aby zademonstrować korzyść z powiązań, dodamy dwie inne funkcje. Jeden jest nazywany SetGetter
, który wyzwala za każdym razem, gdy klucz jest ustawiony i zwraca nową wartość klucza przy użyciu powiązania wejściowego. Druga jest nazywana StreamSetter
, która wyzwala, gdy nowy element jest dodawany do strumienia myStream
i używa powiązania wyjściowego do zapisania wartości true
w kluczu newStreamEntry
.
Dodaj plik o nazwie RedisBindings.cs do projektu.
Skopiuj i wklej następujący przykładowy kod do nowego pliku:
using Microsoft.Extensions.Logging; using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Extensions.Redis; public class RedisBindings { private readonly ILogger<RedisBindings> logger; public RedisBindings(ILogger<RedisBindings> logger) { this.logger = logger; } //This example uses the PubSub trigger to listen to key events on the 'set' operation. A Redis Input binding is used to get the value of the key being set. [Function("SetGetter")] public void SetGetter( [RedisPubSubTrigger(Common.connectionString, "__keyevent@0__:set")] Common.ChannelMessage channelMessage, [RedisInput(Common.connectionString, "GET {Message}")] string value) { logger.LogInformation($"Key '{channelMessage.Message}' was set to value '{value}'"); } //This example uses the PubSub trigger to listen to key events to the key 'key1'. When key1 is modified, a Redis Output binding is used to set the value of the 'key1modified' key to 'true'. [Function("SetSetter")] [RedisOutput(Common.connectionString, "SET")] public string SetSetter( [RedisPubSubTrigger(Common.connectionString, "__keyspace@0__:key1")] Common.ChannelMessage channelMessage) { logger.LogInformation($"Key '{channelMessage.Message}' was updated. Setting the value of 'key1modified' to 'true'"); return $"key1modified true"; } }
Przejdź do karty Uruchamianie i debugowanie w programie VS Code i wybierz zieloną strzałkę, aby debugować kod lokalnie. Kod powinien zostać skompilować pomyślnie. Postęp można śledzić w danych wyjściowych terminalu.
Aby przetestować funkcjonalność powiązania wejściowego, spróbuj ustawić nową wartość dla dowolnego klucza, na przykład przy użyciu polecenia
SET hello world
Powinno być widoczne, żeSetGetter
funkcja wyzwala i zwraca zaktualizowaną wartość.Aby przetestować funkcję powiązania danych wyjściowych, spróbuj dodać nowy element do strumienia
myStream
przy użyciu poleceniaXADD myStream * item Order1
. Zwróć uwagę, żeStreamSetter
funkcja wyzwolona we wpisie nowego strumienia i ustawiła wartośćtrue
na inny klucz o nazwienewStreamEntry
. Toset
polecenie wyzwalaSetGetter
również funkcję .
Wdrażanie kodu w funkcji platformy Azure
Utwórz nową funkcję platformy Azure:
Wróć do karty Platformy Azure i rozwiń swoją subskrypcję.
Kliknij prawym przyciskiem myszy pozycję Aplikacja funkcji, a następnie wybierz pozycję Utwórz aplikację funkcji na platformie Azure (zaawansowane).
Zostanie wyświetlonych kilka monitów o podanie informacji w celu skonfigurowania nowej aplikacji funkcji:
- Wprowadź unikatową nazwę.
- Wybierz pozycję .NET 8 Isolated jako stos środowiska uruchomieniowego.
- Wybierz pozycję Linux lub Windows (działa).
- Wybierz istniejącą lub nową grupę zasobów do przechowywania aplikacji funkcji.
- Wybierz ten sam region co wystąpienie pamięci podręcznej.
- Wybierz pozycję Premium jako plan hostingu.
- Utwórz nowy plan usługi aplikacja systemu Azure.
- Wybierz warstwę cenową EP1 .
- Wybierz istniejące konto magazynu lub utwórz nowe.
- Utwórz nowy zasób usługi Application Insights. Za pomocą zasobu można potwierdzić, że wyzwalacz działa.
Ważne
Wyzwalacze usługi Redis nie są obecnie obsługiwane w funkcjach użycia.
Poczekaj kilka minut na utworzenie nowej aplikacji funkcji. Zostanie ona wyświetlona w obszarze Aplikacja funkcji w ramach subskrypcji. Kliknij prawym przyciskiem myszy nową aplikację funkcji, a następnie wybierz polecenie Wdróż w aplikacji funkcji.
Aplikacja kompiluje i rozpoczyna wdrażanie. Możesz śledzić jego postęp w oknie danych wyjściowych.
Dodawanie informacji o parametry połączenia
Ważne
Ten przykład jest uproszczony dla tego samouczka. W przypadku użycia w środowisku produkcyjnym zalecamy używanie usługi Azure Key Vault do przechowywania parametry połączenia informacji lub uwierzytelniania w wystąpieniu usługi Redis przy użyciu identyfikatora Entra firmy Microsoft.
W witrynie Azure Portal przejdź do nowej aplikacji funkcji i wybierz pozycję Zmienne środowiskowe z menu zasobów.
W okienku roboczym przejdź do pozycji Ustawienia aplikacji.
W polu Nazwa wprowadź ciąg redisConnectionString.
W polu Wartość wprowadź parametry połączenia.
Wybierz pozycję Zastosuj na stronie, aby potwierdzić.
Przejdź do okienka Przegląd i wybierz pozycję Uruchom ponownie, aby ponownie uruchomić aplikację funkcji przy użyciu parametry połączenia informacji.
Testowanie wyzwalaczy i powiązań
Po zakończeniu wdrażania i dodaniu parametry połączenia informacji otwórz aplikację funkcji w witrynie Azure Portal. Następnie wybierz pozycję Strumień dziennika z menu zasobów.
Poczekaj na nawiązanie połączenia z usługą Log Analytics, a następnie użyj konsoli usługi Redis, aby aktywować dowolny z wyzwalaczy. Upewnij się, że wyzwalacze są rejestrowane tutaj.
Czyszczenie zasobów
Jeśli chcesz nadal korzystać z zasobów utworzonych w tym artykule, zachowaj grupę zasobów.
W przeciwnym razie, jeśli skończysz z zasobami, możesz usunąć utworzoną grupę zasobów platformy Azure, aby uniknąć naliczania opłat.
Ważne
Usunięcie grupy zasobów jest nieodwracalne. Jeśli usuniesz grupę zasobów, wszystkie zawarte w niej zasoby zostaną trwale usunięte. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub grupy zasobów. Jeśli zasoby zostały utworzone w istniejącej grupie zasobów zawierającej zasoby, które chcesz zachować, możesz usunąć każdy zasób indywidualnie zamiast usuwać grupę zasobów.
Aby usunąć grupę zasobów
Zaloguj się do witryny Azure Portal, a następnie wybierz pozycję Grupy zasobów.
Wybierz grupę zasobów, którą chcesz usunąć.
Jeśli istnieje wiele grup zasobów, użyj pola Filtruj dla dowolnego pola... wpisz nazwę grupy zasobów utworzonej dla tego artykułu. Wybierz grupę zasobów na liście wyników.
Wybierz pozycję Usuń grupę zasobów.
Zobaczysz prośbę o potwierdzenie usunięcia grupy zasobów. Wpisz nazwę grupy zasobów w celu potwierdzenia, a następnie wybierz pozycję Usuń.
Po krótkim czasie grupa zasobów i wszystkie jej zasoby zostaną usunięte.