Sdílet prostřednictvím


Kurz: Začínáme s triggery a vazbami Azure Functions ve službě Azure Cache for Redis

V tomto kurzu se dozvíte, jak implementovat základní triggery se službou Azure Cache for Redis a Azure Functions. 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

Nastavení instance Azure Cache for Redis

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 Standard C1 , což je dobrý výchozí bod. Začněte pomocí příručky Rychlý start.

Snímek obrazovky s vytvořením mezipaměti na webu Azure Portal

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 .

Konfigurace mezipaměti

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

  2. Přejděte do mezipaměti na webu Azure Portal a pak:

    1. V nabídce prostředků vyberte Upřesnit nastavení.

    2. Posuňte se dolů do pole notify-keyspace-events a zadejte 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.

    3. V horní části okna vyberte Uložit .

    Snímek obrazovky s rozšířeným nastavením služby Azure Cache for Redis na portálu

  3. V nabídce Prostředek vyhledejte přístupové klíče a potom zapište nebo zkopírujte obsah pole Primární připojovací řetězec. Tento řetězec slouží k připojení k mezipaměti.

    Snímek obrazovky znázorňující primární připojovací řetězec pro přístupový klíč

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í do 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í EntraID.

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 .

    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

  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 redis Připojení ionString.

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