Kurz: Začínáme s triggery a vazbami Azure Functions v Azure Redis
V tomto kurzu se dozvíte, jak implementovat základní triggery pomocí Azure Functions a azure Managed Redis (Preview) nebo Azure Cache for Redis. Provede vás pomocí editoru Visual Studio Code (VS Code) k zápisu a nasazení funkce Azure v jazyce C#.
V tomto kurzu se naučíte:
- Nastavte potřebné nástroje.
- Nakonfigurujte mezipaměť a připojte se k němu.
- Vytvořte funkci Azure a nasaďte do ní kód.
- Potvrďte protokolování triggerů.
Požadavky
- Předplatné Azure. Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet.
- Visual Studio Code.
Vytvořte novou instanci Azure Cache for Redis pomocí webu Azure Portal nebo preferovaného nástroje rozhraní příkazového řádku. Tento kurz používá instanci Vyvážené B1 , což je dobrý výchozí bod. Nezapomeňte tuto instanci vybrat při použití příručky Pro rychlý start, abyste mohli začít.
Výchozí nastavení by mělo stačit. V tomto kurzu se používá veřejný koncový bod pro ukázku, ale doporučujeme použít privátní koncový bod pro cokoli v produkčním prostředí.
Vytvoření mezipaměti může trvat několik minut. Až se proces dokončí, můžete přejít k další části.
Nastavit nástroj Visual Studio Code
Pokud jste rozšíření Azure Functions pro VS Code ještě nenainstalovali, vyhledejte Azure Functions v nabídce ROZŠÍŘENÍ a pak vyberte Nainstalovat. Pokud nemáte nainstalované rozšíření C#, nainstalujte ho také.
Přejděte na kartu Azure . Přihlaste se ke svému účtu Azure.
Pokud chcete uložit projekt, který vytváříte, vytvořte v počítači novou místní složku. V tomto kurzu se jako příklad používá RedisAzureFunctionDemo .
Na kartě Azure vytvořte novou aplikaci funkcí výběrem ikony blesku v pravém horním rohu karty Pracovní prostor.
Vyberte Vytvořit funkci....
Vyberte složku, kterou jste vytvořili, a začněte vytvářet nový projekt Azure Functions. Zobrazí se několik výzev na obrazovce. Vyberte:
- Jazyk C# jako jazyk.
- .NET 8.0 Isolated LTS jako modul runtime .NET.
- Prozatím přeskočte jako šablonu projektu.
Pokud nemáte nainstalovanou sadu .NET Core SDK, zobrazí se výzva k tomu.
Důležité
Pro funkce .NET se doporučuje použití izolovaného modelu pracovního procesu přes model v procesu. Porovnání modelů pracovních procesů v procesu a izolovaných pracovních procesů najdete v rozdílech mezi izolovaným modelem pracovního procesu a modelem v procesu pro .NET ve službě Azure Functions. Tato ukázka používá izolovaný model pracovního procesu.
Ověřte, že se nový projekt zobrazí v podokně PRŮZKUMNÍK .
Instalace potřebného balíčku NuGet
Musíte nainstalovat Microsoft.Azure.Functions.Worker.Extensions.Redis
balíček NuGet pro rozšíření Redis, který umožňuje použití oznámení v prostoru klíčů Redis jako triggery ve službě Azure Functions.
Nainstalujte tento balíček tak, že v editoru VS Code přejdete na kartu Terminál a zadáte následující příkaz:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis --prerelease
Poznámka:
Balíček Microsoft.Azure.Functions.Worker.Extensions.Redis
se používá pro funkce izolovaného pracovního procesu .NET. Funkce v procesu .NET a všechny ostatní jazyky místo toho budou balíček používat Microsoft.Azure.WebJobs.Extensions.Redis
.
Přejděte na nově vytvořenou instanci Azure Managed Redis.
Přejděte do mezipaměti na webu Azure Portal a v nabídce Prostředek vyhledejte přístupové klíče . Poznamenejte si nebo zkopírujte obsah primárního pole. Použijete ho k vytvoření připojovací řetězec.
Vytvořte připojovací řetězec pomocí následujícího formátu:
{your-cache-hostname}:10000,password={your-access-key},ssl=True,abortConnect=False
. Pokud jste zakázali protokol TLS/SSL, použijtessl=False
místo toho protokol TLS/SSL.Připojte se k instanci Redis pomocí zvolené metody, jako je rozhraní příkazového řádku Redis nebo Redis Insights. Pokyny k připojení k instanci Redis pomocí rozhraní příkazového řádku Redis najdete v tématu Použití nástroje příkazového řádku Redis se službou Azure Managed Redis.
Nakonfigurujte oznámení o prostoru klíčů pomocí příkazu CONFIG SET :
CONFIG SET notify-keyspace-events KEA
KEA je konfigurační řetězec, který umožňuje oznámení o prostoru klíčů pro všechny klíče a události. Další informace o konfiguračních řetězcích keyspace najdete v dokumentaci k Redis.
Nastavení ukázkového kódu pro triggery Redis
V nástroji VS Code přidejte do projektu soubor s názvem Common.cs . Tato třída slouží k analýze serializované odpovědi JSON pro PubSubTrigger.
Zkopírujte a vložte následující kód do souboru 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; } } }
Přidejte do projektu soubor s názvem RedisTriggers.cs .
Zkopírujte a vložte následující ukázku kódu do nového souboru:
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); } }
Tento kurz ukazuje několik způsobů aktivace aktivity Redis:
PubSubTrigger
, který se aktivuje při publikování aktivity do kanálu Pub/Sub s názvempubsubTest
.KeyspaceTrigger
, který je založen na triggeru Pub/Sub. Použijte hokeyspaceTest
k vyhledání změn klíče.KeyeventTrigger
, který je také postaven na triggeru Pub/Sub. Můžete hoDEL
použít k vyhledání libovolného použití příkazu.ListTrigger
, který hledá změny vlistTest
seznamu.StreamTrigger
, který hledá změny datovéhostreamTest
proudu.
Připojení k mezipaměti
Pokud chcete aktivovat aktivitu Redis, musíte předat připojovací řetězec vaší instance mezipaměti. Tyto informace se ukládají do souboru local.settings.json , který byl automaticky vytvořen ve vaší složce. Doporučujeme použít soubor místních nastavení jako osvědčený postup zabezpečení.
Pokud se chcete připojit k mezipaměti, přidejte
ConnectionStrings
do souboru local.settings.json oddíl a pak pomocí parametruredisConnectionString
přidejte připojovací řetězec. Oddíl by měl vypadat jako v tomto příkladu:{ "IsEncrypted": false, "Values": { "AzureWebJobsStorage": "", "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", "redisConnectionString": "<your-connection-string>" } }
Kód v Common.cs při místním spuštění vypadá na tuto hodnotu:
public const string connectionString = "redisConnectionString";
Důležité
Tento příklad je pro kurz zjednodušený. Pro produkční použití doporučujeme použít Azure Key Vault k ukládání připojovací řetězec informací nebo ověření instance Redis pomocí Microsoft Entra ID.
Sestavení a místní spuštění kódu
Přejděte na kartu Spustit a ladit v editoru VS Code a vyberte zelenou šipku pro místní ladění kódu. Pokud nemáte nainstalované základní nástroje Azure Functions, zobrazí se výzva k tomu. V takovém případě budete muset po instalaci restartovat VS Code.
Kód by se měl úspěšně sestavit. Průběh výstupu terminálu můžete sledovat.
Pokud chcete otestovat funkci triggeru, zkuste klíč vytvořit a odstranit
keyspaceTest
.K mezipaměti se můžete připojit libovolným způsobem. Snadný způsob je použití integrovaného nástroje konzoly na portálu Azure Cache for Redis. Na webu Azure Portal přejděte k instanci mezipaměti a pak ji otevřete výběrem konzoly .
Důležité
Nástroj konzoly ještě není pro Azure Managed Redis k dispozici. Místo toho zvažte použití redis-cli nebo nástroje, jako je Redis Insight , ke spouštění příkazů přímo v instanci Redis.
Po otevření konzoly zkuste následující příkazy:
SET keyspaceTest 1
SET keyspaceTest 2
DEL keyspaceTest
PUBLISH pubsubTest testMessage
LPUSH listTest test
XADD streamTest * name Clippy
Ověřte, že se triggery aktivují v terminálu.
Přidání vazeb Redis
Vazby přidávají zjednodušený způsob čtení nebo zápisu dat uložených v instanci Redis. Abychom si ukázali výhody vazeb, přidáme dvě další funkce. Jedna se nazývá SetGetter
, která se aktivuje při každém nastavení klíče a vrátí novou hodnotu klíče pomocí vstupní vazby. Druhá je volána StreamSetter
, která se aktivuje při přidání nové položky do datového proudu myStream
a používá výstupní vazbu k zápisu hodnoty true
do klíče newStreamEntry
.
Přidejte do projektu soubor s názvem RedisBindings.cs .
Zkopírujte a vložte následující ukázku kódu do nového souboru:
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"; } }
Přejděte na kartu Spustit a ladit v editoru VS Code a vyberte zelenou šipku pro místní ladění kódu. Kód by se měl úspěšně sestavit. Průběh výstupu terminálu můžete sledovat.
Pokud chcete otestovat funkci vstupní vazby, zkuste nastavit novou hodnotu pro libovolný klíč, například pomocí příkazu
SET hello world
. Měli byste vidět, žeSetGetter
funkce aktivuje a vrátí aktualizovanou hodnotu.Pokud chcete otestovat funkci výstupní vazby, zkuste do streamu
myStream
přidat novou položku pomocí příkazuXADD myStream * item Order1
. Všimněte si, žeStreamSetter
funkce aktivovaná na nové položce datového proudu a nastavte hodnotutrue
na jiný klíč volanýnewStreamEntry
. Tentoset
příkaz také aktivujeSetGetter
funkci.
Nasazení kódu do funkce Azure
Vytvořte novou funkci Azure:
Vraťte se na kartu Azure a rozbalte své předplatné.
Klikněte pravým tlačítkem na Aplikaci funkcí a pak vyberte Vytvořit aplikaci funkcí v Azure (Upřesnit).
Zobrazí se několik výzev ke konfiguraci nové aplikace funkcí:
- Zadejte jedinečný název.
- Jako zásobník modulu runtime vyberte .NET 8 Izolované .
- Vyberte Buď Linux, nebo Windows (funguje).
- Vyberte existující nebo novou skupinu prostředků, ve které se má aplikace funkcí uchovávat.
- Vyberte stejnou oblast jako instance mezipaměti.
- Jako plán hostování vyberte Premium .
- Vytvořte nový plán služby Aplikace Azure.
- Vyberte cenovou úroveň EP1.
- Vyberte existující účet úložiště nebo vytvořte nový.
- Vytvořte nový prostředek Application Insights. Prostředek použijete k potvrzení, že trigger funguje.
Důležité
Triggery Redis se v současné době nepodporují u funkcí spotřeby.
Počkejte několik minut, než se vytvoří nová aplikace funkcí. Zobrazí se v části Aplikace funkcí ve vašem předplatném. Klikněte pravým tlačítkem na novou aplikaci funkcí a pak vyberte Nasadit do aplikace funkcí.
Aplikace se sestaví a začne nasazovat. Průběh můžete sledovat v okně výstupu.
Přidání informací o připojovací řetězec
Důležité
Tento příklad je pro kurz zjednodušený. Pro produkční použití doporučujeme použít Azure Key Vault k ukládání připojovací řetězec informací nebo ověření instance Redis pomocí Microsoft Entra ID.
Na webu Azure Portal přejděte do nové aplikace funkcí a v nabídce prostředků vyberte Proměnné prostředí.
V pracovním podokně přejděte do nastavení aplikace.
Jako název zadejte redisConnectionString.
Jako hodnotu zadejte připojovací řetězec.
Potvrďte výběr možnosti Použít na stránce.
Přejděte do podokna Přehled a výběrem možnosti Restartovat restartujte aplikaci funkcí s informacemi o připojovací řetězec.
Otestování triggerů a vazeb
Po dokončení nasazení a přidání připojovací řetězec informací otevřete aplikaci funkcí na webu Azure Portal. Pak v nabídce prostředků vyberte Protokol streamu .
Počkejte, až se Log Analytics připojí, a pak pomocí konzoly Redis aktivujte některou z aktivačních událostí. Ověřte, že se tady protokolují triggery.
Vyčištění prostředků
Pokud chcete dál používat prostředky, které jste vytvořili v tomto článku, ponechte skupinu prostředků.
Jinak pokud jste s prostředky hotovi, můžete odstranit skupinu prostředků Azure, kterou jste vytvořili, abyste se vyhnuli poplatkům.
Důležité
Odstranění skupiny prostředků je nevratné. Při odstranění skupiny prostředků se všechny prostředky, které obsahuje, trvale odstraní. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste prostředky vytvořili v existující skupině prostředků, která obsahuje prostředky, které chcete zachovat, můžete každý prostředek odstranit jednotlivě místo odstranění skupiny prostředků.
Odstranění skupiny prostředků
Přihlaste se k portálu Azure Portal a potom vyberte Skupiny prostředků.
Vyberte skupinu prostředků, kterou chcete odstranit.
Pokud existuje mnoho skupin prostředků, použijte filtr pro jakékoli pole... zadejte název skupiny prostředků, kterou jste vytvořili pro tento článek. V seznamu výsledků vyberte skupinu prostředků.
Vyberte Odstranit skupinu prostředků.
Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Potvrďte odstranění zadáním názvu vaší skupiny prostředků a vyberte Odstranit.
Po chvíli se skupina prostředků včetně všech prostředků, které obsahuje, odstraní.