Sdílet prostřednictvím


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

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

  1. 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é.

    Snímek obrazovky s požadovanými rozšířeními nainstalovanými ve VS Code

  2. Přejděte na kartu Azure . Přihlaste se ke svému účtu Azure.

  3. 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 .

  4. Na kartě Azure vytvořte novou aplikaci funkcí výběrem ikony blesku v pravém horním rohu karty Pracovní prostor.

  5. Vyberte Vytvořit funkci....

    Snímek obrazovky znázorňující ikonu pro přidání nové funkce z editoru VS Code

  6. 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.

  7. Ověřte, že se nový projekt zobrazí v podokně PRŮZKUMNÍK .

    Snímek obrazovky pracovního prostoru ve VS Code

Instalace potřebného balíčku NuGet

Musíte nainstalovat Microsoft.Azure.Functions.Worker.Extensions.Redisbalíč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 .

  1. Přejděte na nově vytvořenou instanci Azure Managed Redis.

  2. 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.

  3. 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žijte ssl=False místo toho protokol TLS/SSL.

  4. 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.

  5. 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

  1. 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.

  2. 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; }
        }
    }
    
  3. Přidejte do projektu soubor s názvem RedisTriggers.cs .

  4. 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);
        }
    }
    
  5. 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ázvem pubsubTest.
    • KeyspaceTrigger, který je založen na triggeru Pub/Sub. Použijte ho keyspaceTest k vyhledání změn klíče.
    • KeyeventTrigger, který je také postaven na triggeru Pub/Sub. Můžete ho DEL použít k vyhledání libovolného použití příkazu.
    • ListTrigger, který hledá změny v listTest seznamu.
    • StreamTrigger, který hledá změny datového streamTest proudu.

Připojení k mezipaměti

  1. 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í.

  2. Pokud se chcete připojit k mezipaměti, přidejte ConnectionStrings do souboru local.settings.json oddíl a pak pomocí parametru redisConnectionString 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

  1. 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.

  2. Kód by se měl úspěšně sestavit. Průběh výstupu terminálu můžete sledovat.

  3. 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.

    Snímek obrazovky s kódem C-Sharp a připojovací řetězec

    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

    Snímek obrazovky konzoly a některých příkazů a výsledků Redis

  4. Ověřte, že se triggery aktivují v terminálu.

    Snímek obrazovky editoru VS Code se spuštěným kódem

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.

  1. Přidejte do projektu soubor s názvem RedisBindings.cs .

  2. 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";
        }
    }
    
  3. 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.

  4. 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, že SetGetter funkce aktivuje a vrátí aktualizovanou hodnotu.

  5. Pokud chcete otestovat funkci výstupní vazby, zkuste do streamu myStream přidat novou položku pomocí příkazu XADD myStream * item Order1. Všimněte si, že StreamSetter funkce aktivovaná na nové položce datového proudu a nastavte hodnotu true na jiný klíč volaný newStreamEntry. Tento set příkaz také aktivuje SetGetter funkci.

Nasazení kódu do funkce Azure

  1. Vytvořte novou funkci Azure:

    1. Vraťte se na kartu Azure a rozbalte své předplatné.

    2. Klikněte pravým tlačítkem na Aplikaci funkcí a pak vyberte Vytvořit aplikaci funkcí v Azure (Upřesnit).

    Snímek obrazovky s výběrem pro vytvoření aplikace funkcí ve VS Code

  2. 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.

  3. 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í.

    Snímek obrazovky s výběry pro nasazení do aplikace funkcí ve VS Code

  4. 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.

  1. Na webu Azure Portal přejděte do nové aplikace funkcí a v nabídce prostředků vyberte Proměnné prostředí.

  2. V pracovním podokně přejděte do nastavení aplikace.

  3. Jako název zadejte redisConnectionString.

  4. Jako hodnotu zadejte připojovací řetězec.

  5. Potvrďte výběr možnosti Použít na stránce.

  6. 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

  1. 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 .

  2. 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.

    Snímek obrazovky s streamem protokolu pro prostředek aplikace funkcí v nabídce prostředků

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ů

  1. Přihlaste se k portálu Azure Portal a potom vyberte Skupiny prostředků.

  2. 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ů.

    Snímek obrazovky se seznamem skupin prostředků, které se mají odstranit v pracovním podokně

  3. Vyberte Odstranit skupinu prostředků.

  4. 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.

    Snímek obrazovky s formulářem, který vyžaduje název prostředku k potvrzení odstranění

Po chvíli se skupina prostředků včetně všech prostředků, které obsahuje, odstraní.