Oktatóanyag: Ismerkedés az Azure Functions eseményindítóival és kötéseivel az Azure Cache for Redisben

Ez az oktatóanyag bemutatja, hogyan implementálhat alapvető triggereket az Azure Cache for Redis és az Azure Functions használatával. Végigvezeti önt a Visual Studio Code (VS Code) használatával egy Azure-függvény írásához és üzembe helyezéséhez a C#-ban.

Ebben az oktatóanyagban az alábbiakkal fog megismerkedni:

  • Állítsa be a szükséges eszközöket.
  • Konfigurálja és csatlakozzon egy gyorsítótárhoz.
  • Hozzon létre egy Azure-függvényt, és helyezzen üzembe benne kódot.
  • Erősítse meg az eseményindítók naplózását.

Előfeltételek

Azure Cache for Redis-példány beállítása

Hozzon létre egy új Azure Cache for Redis-példányt az Azure Portal vagy a kívánt CLI-eszköz használatával. Ez az oktatóanyag egy Standard C1-példányt használ, ami jó kiindulópont. Első lépésként használja a rövid útmutatót .

Képernyőkép gyorsítótár létrehozásáról az Azure Portalon.

Az alapértelmezett beállításoknak elegendőnek kell lennie. Ez az oktatóanyag nyilvános végpontot használ a bemutatóhoz, de azt javasoljuk, hogy minden éles környezetben használjon privát végpontot.

A gyorsítótár létrehozása eltarthat néhány percig. A folyamat befejeződése közben továbbléphet a következő szakaszra.

A Visual Studio Code telepítése

  1. Ha még nem telepítette a VS Code Azure Functions-bővítményét, keresse meg az Azure Functionst a BŐVÍTMÉNYEK menüben, majd válassza a Telepítés lehetőséget. Ha nincs telepítve a C# bővítmény, telepítse azt is.

    Képernyőkép a VS Code-ban telepített szükséges bővítményekről.

  2. Lépjen az Azure lapra. Jelentkezzen be az Azure-fiókjába.

  3. Az éppen létrehozott projekt tárolásához hozzon létre egy új helyi mappát a számítógépen. Ez az oktatóanyag a RedisAzureFunctionDemo-t használja példaként.

  4. Az Azure lapon hozzon létre egy új függvényalkalmazást a Munkaterület lap jobb felső sarkában található villámgyors ikon kiválasztásával.

  5. Válassza a Függvény létrehozása...lehetőséget.

    Képernyőkép egy új függvény VS Code-ból való hozzáadásának ikonjáról.

  6. Válassza ki a létrehozott mappát egy új Azure Functions-projekt létrehozásához. Számos képernyőn megjelenő üzenet jelenik meg. A következők szerint válasszon:

    • C# nyelvként.
    • .NET 8.0 Izolált LTS.NET-futtatókörnyezetként .
    • Egyelőre kihagyhatja a projektsablont.

    Ha nincs telepítve a .NET Core SDK, a rendszer erre kéri.

    Fontos

    A .NET-függvények esetében az izolált feldolgozói modell használata javasolt a folyamaton belüli modellen keresztül. A folyamaton belüli és az izolált feldolgozói modellek összehasonlításához tekintse meg az izolált feldolgozói modell és az Azure Functions .NET-hez készült folyamaton belüli modellje közötti különbségeket. Ez a minta az izolált feldolgozómodellt használja.

  7. Ellenőrizze, hogy az új projekt megjelenik-e az EXPLORER panelen.

    Képernyőkép egy munkaterületről a VS Code-ban.

A szükséges NuGet-csomag telepítése

Telepítenie Microsoft.Azure.Functions.Worker.Extensions.Rediskell a Redis-bővítmény NuGet-csomagját, amely lehetővé teszi, hogy a Redis keyspace-értesítések eseményindítóként legyenek használva az Azure Functionsben.

Telepítse ezt a csomagot a VS Code Terminál lapján, és adja meg a következő parancsot:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Redis --prerelease

Feljegyzés

A Microsoft.Azure.Functions.Worker.Extensions.Redis csomag a .NET izolált feldolgozói folyamatfüggvényeihez használható. A .NET folyamaton belüli függvényei és minden más nyelv a Microsoft.Azure.WebJobs.Extensions.Redis csomagot fogják használni.

A gyorsítótár konfigurálása

  1. Nyissa meg az újonnan létrehozott Azure Cache for Redis-példányt.

  2. Nyissa meg a gyorsítótárat az Azure Portalon, majd:

    1. Az erőforrás menüjében válassza a Speciális beállítások lehetőséget.

    2. Görgessen le a notify-keyspace-events mezőbe, és írja be a KEA értéket.

      A KEA egy konfigurációs sztring, amely lehetővé teszi a kulcstér-értesítéseket az összes kulcshoz és eseményhez. A kulcstér konfigurációs sztringjeiről további információt a Redis dokumentációjában talál.

    3. Válassza a Mentés lehetőséget az ablak tetején.

    Képernyőkép az Azure Cache for Redis speciális beállításairól a portálon.

  3. Válassza ki a Hozzáférési kulcsokat az erőforrás menüjében, majd írja le vagy másolja az Elsődleges kapcsolati sztring mező tartalmát. Ez a sztring a gyorsítótárhoz való csatlakozáshoz használható.

    Képernyőkép egy hozzáférési kulcs elsődleges kapcsolati sztring.

A Redis-eseményindítók példakódjának beállítása

  1. A VS Code-ban adjon hozzá egy Common.cs nevű fájlt a projekthez. Ez az osztály segít elemezni a PubSubTrigger JSON szerializált válaszát.

  2. Másolja és illessze be a következő kódot a Common.cs fájlba:

    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. Adjon hozzá egy RedisTriggers.cs nevű fájlt a projekthez.

  4. Másolja és illessze be a következő kódmintát az új fájlba:

    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. Ez az oktatóanyag a Redis-tevékenység aktiválásának több módját mutatja be:

    • PubSubTrigger, amely akkor aktiválódik, ha egy tevékenységet közzétevő a Pub/Al csatornán.pubsubTest
    • KeyspaceTrigger, amely a Pub/Sub eseményindítóra épül. Ezzel megkeresheti a kulcs módosításait keyspaceTest .
    • KeyeventTrigger, amely szintén a Pub/Sub eseményindítóra épül. Ezzel megkeresheti a DEL parancs bármilyen használatát.
    • ListTrigger, amely a lista módosításait listTest keresi.
    • StreamTrigger, amely a stream módosításait streamTest keresi.

Csatlakozás a gyorsítótárba

  1. A Redis-tevékenység aktiválásához meg kell adnia a gyorsítótárpéldány kapcsolati sztring. Ezeket az adatokat a rendszer a mappában automatikusan létrehozott local.settings.json fájlban tárolja. Javasoljuk, hogy a helyi beállításfájlt használja biztonsági ajánlott eljárásként.

  2. A gyorsítótárhoz való csatlakozáshoz vegyen fel egy szakaszt ConnectionStrings a local.settings.json fájlba, majd adja hozzá a kapcsolati sztring a redisConnectionString paraméterrel. A szakasznak a következő példához hasonlóan kell kinéznie:

    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "",
        "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
        "redisConnectionString": "<your-connection-string>"
      }
    }
    

    A Common.cs kódja ezt az értéket keresi, amikor helyileg fut:

    public const string connectionString = "redisConnectionString";
    

Fontos

Ez a példa egyszerűbb az oktatóanyaghoz. Éles használat esetén javasoljuk, hogy az Azure Key Vault használatával tárolja kapcsolati sztring információkat, vagy hitelesítse a Redis-példányt az EntraID használatával.

A kód helyi létrehozása és futtatása

  1. Váltson a VS Code Futtatás és hibakeresés lapjára, és válassza a zöld nyílbillentyűt a kód helyi hibakereséséhez. Ha nincs telepítve az Azure Functions alapvető eszközei, a rendszer erre kéri. Ebben az esetben a telepítés után újra kell indítania a VS Code-ot.

  2. A kódnak sikeresen létre kell épülnie. A terminálkimenetben nyomon követheti a folyamat előrehaladását.

  3. Az eseményindító funkcióinak teszteléséhez próbálja meg létrehozni és törölni a keyspaceTest kulcsot.

    Bármilyen módon használhatja a gyorsítótárhoz való csatlakozást. Egyszerűen használhatja a beépített konzoleszközt az Azure Cache for Redis portálon. Nyissa meg a gyorsítótárpéldányt az Azure Portalon, majd a Konzol gombra kattintva nyissa meg.

    C-Sharp-kód és kapcsolati sztring képernyőképe.

    A konzol megnyitása után próbálkozzon a következő parancsokkal:

    • SET keyspaceTest 1
    • SET keyspaceTest 2
    • DEL keyspaceTest
    • PUBLISH pubsubTest testMessage
    • LPUSH listTest test
    • XADD streamTest * name Clippy

    Képernyőkép egy konzolról, valamint néhány Redis-parancsról és -eredményről.

  4. Győződjön meg arról, hogy az eseményindítók aktiválva vannak a terminálban.

    Képernyőkép a VS Code-szerkesztőről, amelyen a kód fut.

Redis-kötések hozzáadása

A kötések egyszerűbb módot adnak a Redis-példányon tárolt adatok olvasására vagy írására. A kötések előnyeinek bemutatásához két másik függvényt is hozzáadunk. Az egyik neve SetGetter, amely minden alkalommal aktiválódik, amikor egy kulcs be van állítva, és egy bemeneti kötéssel adja vissza a kulcs új értékét. A másik neve az StreamSetter, amely aktiválódik, amikor egy új elemet adnak hozzá a streamhez myStream , és egy kimeneti kötéssel írja az értéket true a kulcsba newStreamEntry.

  1. Adjon hozzá egy RedisBindings.cs nevű fájlt a projekthez.

  2. Másolja és illessze be a következő kódmintát az új fájlba:

    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. Váltson a VS Code Futtatás és hibakeresés lapjára, és válassza a zöld nyílbillentyűt a kód helyi hibakereséséhez. A kódnak sikeresen létre kell épülnie. A terminálkimenetben nyomon követheti a folyamat előrehaladását.

  4. A bemeneti kötés funkciójának teszteléséhez próbáljon meg új értéket beállítani bármely kulcshoz, például a parancs SET hello world használatával: Látnia kell, hogy a SetGetter függvény aktiválja és visszaadja a frissített értéket.

  5. A kimeneti kötés funkció teszteléséhez próbáljon meg új elemet hozzáadni a streamhez myStream a paranccsal XADD myStream * item Order1. Figyelje meg, hogy a StreamSetter függvény aktiválódott az új streambejegyzésen, és állítsa az értéket true egy másik, úgynevezett newStreamEntrykulcsra. Ez a set parancs a függvényt is aktiválja SetGetter .

Kód üzembe helyezése Azure-függvényben

  1. Új Azure-függvény létrehozása:

    1. Lépjen vissza az Azure lapra, és bontsa ki előfizetését.

    2. Kattintson a jobb gombbal a függvényalkalmazásra, majd válassza a Függvényalkalmazás létrehozása az Azure-ban (Speciális) lehetőséget.

    A függvényalkalmazás VS Code-ban való létrehozásához használható kijelöléseket szemléltető képernyőkép.

  2. Az új függvényalkalmazás konfigurálásához több információkérés is megjelenik:

    • Adjon meg egy egyedi nevet.
    • Válassza a .NET 8 Izolált elemet futtatókörnyezeti veremként.
    • Válassza a Linux vagy a Windows (vagy működik) lehetőséget.
    • Válasszon ki egy meglévő vagy új erőforráscsoportot a függvényalkalmazás tárolásához.
    • Válassza ki ugyanazt a régiót, mint a gyorsítótárpéldány.
    • Válassza a Premiumot üzemeltetési csomagként.
    • Hozzon létre egy új Azure-alkalmazás szolgáltatáscsomagot.
    • Válassza ki az EP1 tarifacsomagot.
    • Válasszon ki egy meglévő tárfiókot, vagy hozzon létre egy újat.
    • Hozzon létre egy új Application Insights-erőforrást. Az erőforrás használatával ellenőrizheti, hogy az eseményindító működik-e.

    Fontos

    A Redis-eseményindítók jelenleg nem támogatottak a használati függvényekben.

  3. Várjon néhány percet az új függvényalkalmazás létrehozásához. A függvényalkalmazás alatt jelenik meg az előfizetésben. Kattintson a jobb gombbal az új függvényalkalmazásra, majd válassza az Üzembe helyezés függvényalkalmazásban lehetőséget.

    Képernyőkép a VS Code-ban egy függvényalkalmazásban való üzembe helyezésre vonatkozó beállításokról.

  4. Az alkalmazás létrehozza és megkezdi az üzembe helyezést. A folyamat előrehaladását a kimeneti ablakban követheti nyomon.

Kapcsolati sztring adatainak hozzáadása

  1. Az Azure Portalon nyissa meg az új függvényalkalmazást, és válassza ki a környezeti változókat az erőforrásmenüből.

  2. A munkaablakban válassza az Alkalmazásbeállítások lehetőséget.

  3. A Név mezőbe írja be a redis Csatlakozás ionString nevet.

  4. Az Érték mezőben adja meg a kapcsolati sztring.

  5. A megerősítéshez válassza az Alkalmaz lehetőséget a lapon.

  6. Lépjen az Áttekintés panelre, és válassza az Újraindítás lehetőséget a függvényalkalmazás újraindításához a kapcsolati sztring adataival.

Az eseményindítók és kötések tesztelése

  1. Az üzembe helyezés befejezése és a kapcsolati sztring adatok hozzáadása után nyissa meg a függvényalkalmazást az Azure Portalon. Ezután válassza a Naplóstream lehetőséget az erőforrás menüjében.

  2. Várja meg, amíg a Log Analytics csatlakozik, majd a Redis-konzollal aktiválja bármelyik eseményindítót. Ellenőrizze, hogy az eseményindítók itt vannak-e naplózva.

    Képernyőkép egy függvényalkalmazás-erőforrás naplóstreaméről az erőforrásmenüben.

Az erőforrások eltávolítása

Ha továbbra is használni szeretné a cikkben létrehozott erőforrásokat, tartsa meg az erőforráscsoportot.

Ellenkező esetben, ha végzett az erőforrásokkal, törölheti a létrehozott Azure-erőforráscsoportot a díjak elkerülése érdekében.

Fontos

Az erőforráscsoport törlése nem vonható vissza. Az erőforráscsoport törlésekor a benne foglalt összes erőforrás véglegesen törlődik. Figyeljen arra, hogy ne töröljön véletlenül erőforráscsoportot vagy erőforrásokat. Ha olyan meglévő erőforráscsoportban hozta létre az erőforrásokat, amely a megtartani kívánt erőforrásokat tartalmazza, az erőforráscsoport törlése helyett egyenként törölheti az egyes erőforrásokat.

Erőforráscsoport törlése

  1. Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.

  2. Válassza ki a törölni kívánt erőforráscsoportot.

    Ha sok erőforráscsoport van, használja a Szűrő bármely mezőhöz... mezőt, írja be a cikkhez létrehozott erőforráscsoport nevét. Válassza ki az erőforráscsoportot az eredménylistában.

    Képernyőkép a munkaablakban törölni kívánt erőforráscsoportok listájáról.

  3. Válassza az Erőforráscsoport törlése elemet.

  4. A rendszer az erőforráscsoport törlésének megerősítését kéri. A megerősítéshez írja be az erőforráscsoport nevét, és válassza a Törlést.

    Képernyőkép egy űrlapról, amely megköveteli az erőforrás nevét a törlés megerősítéséhez.

A rendszer néhány pillanaton belül törli az erőforráscsoportot és annak erőforrásait.