Megosztás a következőn keresztül:


Oktatóanyag: Dinamikus konfiguráció használata Azure Functions alkalmazásban

A .NET-konfigurációszolgáltató App Configuration támogatja az alkalmazástevékenység által dinamikusan vezérelt konfiguráció gyorsítótárazását és frissítését. Ez az oktatóanyag bemutatja, hogyan valósíthat meg dinamikus konfigurációs frissítéseket a kódban. A rövid útmutatókban bemutatott Azure Functions alkalmazásra épül. A folytatás előtt először fejezze be az Azure Functions-alkalmazás létrehozása Azure App Configuration.

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

  • Állítsa be a Azure Functions alkalmazást úgy, hogy az App Configuration áruház változásaira reagálva frissítse a konfigurációját.
  • Szúrja be a legújabb konfigurációt a Azure Functions hívásokba.

Előfeltételek

Adatok újrabetöltése App Configuration

Azure Functions támogatja a folyamaton belüli vagy izolált folyamatok futtatását. A két mód közötti App Configuration használat fő különbsége a konfiguráció frissítése. A folyamat közbeni módban minden függvényben hívást kell kezdeményeznie a konfiguráció frissítéséhez. Izolált folyamat módban támogatott a köztes szoftver. A App Configuration köztes szoftver lehetővé teszi, Microsoft.Azure.AppConfiguration.Functions.Workerhogy a hívás automatikusan frissítse a konfigurációt az egyes függvények végrehajtása előtt.

  1. Frissítse a App Configuration csatlakozó kódot, és adja hozzá az adatfrissítési feltételeket.

    Nyissa meg a Startup.cs fájlt, és frissítse a metódust ConfigureAppConfiguration .

    public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder)
    {
        builder.ConfigurationBuilder.AddAzureAppConfiguration(options =>
        {
            options.Connect(Environment.GetEnvironmentVariable("ConnectionString"))
                    // Load all keys that start with `TestApp:` and have no label
                    .Select("TestApp:*")
                    // Configure to reload configuration if the registered sentinel key is modified
                    .ConfigureRefresh(refreshOptions =>
                        refreshOptions.Register("TestApp:Settings:Sentinel", refreshAll: true));
        });
    }
    

    A ConfigureRefresh metódus regisztrál egy beállítást, amely ellenőrzi a módosításokat, amikor frissítés aktiválódik az alkalmazásban. A refreshAll paraméter arra utasítja a App Configuration-szolgáltatót, hogy töltse be újra a teljes konfigurációt, amikor változást észlel a regisztrált beállításban.

    A frissítésre regisztrált összes beállítás alapértelmezett gyorsítótár-lejárata 30 másodperc, mielőtt új frissítést kísérel meg. A metódus meghívásával AzureAppConfigurationRefreshOptions.SetCacheExpiration frissíthető.

    Tipp

    Ha több kulcsértéket frissít App Configuration, általában nem szeretné, hogy az alkalmazás minden módosítás előtt újra betöltse a konfigurációt. A sentinel-kulcsot csak akkor regisztrálhatja és frissítheti, ha az összes többi konfigurációs módosítás befejeződött. Ez segít biztosítani az alkalmazásban a konfiguráció konzisztenciáját.

    Az inkonzisztenciák kockázatának minimalizálása érdekében az alábbiakat is megteheti:

    • Úgy tervezheti meg az alkalmazást, hogy elviselhető legyen az átmeneti konfigurációs inkonzisztenciához
    • Az alkalmazás bemelegítése az online állapotba hozás előtt (kérések kiszolgálása)
    • Végezze el az alapértelmezett konfigurációt az alkalmazásban, és használja, ha a konfiguráció érvényesítése sikertelen
    • Válasszon olyan konfigurációfrissítési stratégiát, amely minimalizálja az alkalmazásra gyakorolt hatást, például alacsony forgalomidőzítést.
  1. Frissítse a metódustConfigure, hogy a Azure App Configuration-szolgáltatások függőséginjektálással legyenek elérhetővé.

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddAzureAppConfiguration();
    }
    
  2. Nyissa meg a Function1.cs fájlt, és adja hozzá a következő névtereket.

    using System.Linq;
    using Microsoft.Extensions.Configuration.AzureAppConfiguration;
    

    Frissítse a konstruktort, hogy függőséginjektáláson keresztül szerezze IConfigurationRefresherProvider be a példányát, amelyből beszerezheti a példányát IConfigurationRefresher.

    private readonly IConfiguration _configuration;
    private readonly IConfigurationRefresher _configurationRefresher;
    
    public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider)
    {
        _configuration = configuration;
        _configurationRefresher = refresherProvider.Refreshers.First();
    }
    
  3. Frissítse a metódust és a Run jelet a konfiguráció frissítéséhez a TryRefreshAsync Functions-hívás elején található metódussal. Nem működik, ha a gyorsítótár lejárati ideje nem érhető el. Távolítsa el az await operátort, ha úgy szeretné frissíteni a konfigurációt, hogy nem blokkolja az aktuális Functions-hívást. Ebben az esetben a későbbi Functions-hívások frissített értéket kapnak.

    public async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req, ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
    
        await _configurationRefresher.TryRefreshAsync(); 
    
        string keyName = "TestApp:Settings:Message";
        string message = _configuration[keyName];
    
        return message != null
            ? (ActionResult)new OkObjectResult(message)
            : new BadRequestObjectResult($"Please create a key-value with the key '{keyName}' in App Configuration.");
    }
    

A függvény helyi tesztelése

  1. Állítson be egy ConnectionString nevű környezeti változót, és állítsa be az alkalmazáskonfigurációs tároló hozzáférési kulcsára. Ha a Windows parancssorát használja, futtassa a következő parancsot, és indítsa újra a parancssort a módosítás érvénybe lépésének engedélyezéséhez:

    setx ConnectionString "connection-string-of-your-app-configuration-store"
    

    Ha Windows PowerShell használ, futtassa a következő parancsot:

    $Env:ConnectionString = "connection-string-of-your-app-configuration-store"
    

    MacOS vagy Linux használata esetén futtassa a következő parancsot:

    export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. A függvény teszteléséhez nyomja le az F5 billentyűt. Ha a rendszer kéri, fogadja el a Visual Studiótól a Azure Functions Core-eszközök letöltésére és telepítésére vonatkozó kérést. Előfordulhat, hogy engedélyeznie kell egy tűzfalkivételt, hogy az eszközök kezelni tudják a HTTP-kéréseket.

  3. Másolja a függvény URL-címét az Azure-függvény futtatókörnyezetéből.

    Rövid útmutató – Függvény hibakeresése a VS-ben

  4. Illessze be a HTTP-kérelem URL-címét a böngésző címsorába. Az alábbi képen a böngészőben a függvény által visszaadott helyi GET kérésre adott válasz látható.

    Rövid útmutató – A függvény helyi indítása

  5. Jelentkezzen be az Azure Portal. Válassza a Minden erőforrás lehetőséget, majd válassza ki a rövid útmutatóban létrehozott App Configuration tárolót.

  6. Válassza a Configuration Explorer (Konfigurációkezelő) lehetőséget, és frissítse a következő kulcs értékét:

    Kulcs Érték
    TestApp:Beállítások:Üzenet Adatok Azure App Configuration - Frissítve

    Ezután hozza létre a sentinel kulcsot, vagy módosítsa annak értékét, ha már létezik, például:

    Kulcs Érték
    TestApp:Settings:Sentinel v1
  7. Frissítse a böngészőt néhányszor. Ha a gyorsítótárazott beállítás 30 másodperc után lejár, az oldalon megjelenik a Functions-hívás válasza frissített értékkel.

    Rövid útmutató – Függvény frissítése helyi

Megjegyzés

Az oktatóanyagban használt példakód letölthető App Configuration GitHub-adattárból.

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

Ha nem szeretné tovább használni a cikkben létrehozott erőforrásokat, törölje az itt létrehozott 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 és a benne lévő összes erőforrás véglegesen törlődik. Győződjön meg arról, hogy nem véletlenül törli a helytelen erőforráscsoportot vagy erőforrásokat. Ha a cikk erőforrásait egy olyan erőforráscsoportban hozta létre, amely más megtartani kívánt erőforrásokat tartalmaz, törölje az egyes erőforrásokat a megfelelő panelről az erőforráscsoport törlése helyett.

  1. Jelentkezzen be a Azure Portal, és válassza az Erőforráscsoportok lehetőséget.
  2. A Szűrés név alapján mezőbe írja be az erőforráscsoport nevét.
  3. Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
  4. Válassza az Erőforráscsoport törlése elemet.
  5. A rendszer az erőforráscsoport törlésének megerősítését kéri. Adja meg az erőforráscsoport nevét a megerősítéshez, majd válassza a Törlés lehetőséget.

Néhány pillanat múlva az erőforráscsoport és annak összes erőforrása törlődik.

Következő lépések

Ebben az oktatóanyagban engedélyezte a Azure Functions-alkalmazást, hogy dinamikusan frissítse a konfigurációs beállításokat App Configuration. A következő oktatóanyagból megtudhatja, hogyan használhat azure-beli felügyelt identitást a App Configuration való hozzáférés egyszerűsítéséhez.