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
- Azure-előfizetés – ingyenesen létrehozhat egyet
- Visual Studio az Azure fejlesztési számítási feladattal
- Azure Functions eszközöket, ha még nincs telepítve a Visual Studióval.
- Rövid útmutató befejezése: Azure-függvényalkalmazás létrehozása Azure App Configuration
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.Worker
hogy a hívás automatikusan frissítse a konfigurációt az egyes függvények végrehajtása előtt.
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. ArefreshAll
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.
Frissítse a metódust
Configure
, 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(); }
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átIConfigurationRefresher
.private readonly IConfiguration _configuration; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider) { _configuration = configuration; _configurationRefresher = refresherProvider.Refreshers.First(); }
Frissítse a metódust és a
Run
jelet a konfiguráció frissítéséhez aTryRefreshAsync
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 azawait
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
Á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'
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.
Másolja a függvény URL-címét az Azure-függvény futtatókörnyezetéből.
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ó.
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.
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 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.
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.
- Jelentkezzen be a Azure Portal, és válassza az Erőforráscsoportok lehetőséget.
- A Szűrés név alapján mezőbe írja be az erőforráscsoport nevét.
- Az eredménylistában válassza ki az erőforráscsoport nevét az áttekintés megtekintéséhez.
- Válassza az Erőforráscsoport törlése elemet.
- 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.
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: