Kurz: Použití dynamické konfigurace v aplikaci Azure Functions
Zprostředkovatel konfigurace App Configuration .NET podporuje ukládání do mezipaměti a aktualizaci konfigurace dynamicky řízené aktivitou aplikace. V tomto kurzu se dozvíte, jak do kódu implementovat aktualizace dynamické konfigurace. Vychází z aplikace Azure Functions představené v rychlých startech. Než budete pokračovat, nejprve dokončete vytvoření aplikace Azure Functions pomocí Azure App Configuration.
V tomto kurzu se naučíte:
- Nastavte aplikaci Azure Functions tak, aby aktualizovala její konfiguraci v reakci na změny v App Configuration Storu.
- Do volání Azure Functions vložte nejnovější konfiguraci.
Požadavky
- Předplatné Azure – vytvořte si ho zdarma
- Visual Studio se sadou funkcí Vývoj pro Azure
- Azure Functions nástroje, pokud ještě nejsou nainstalované se sadou Visual Studio.
- Dokončení rychlého startu Vytvoření aplikace Azure Functions pomocí Azure App Configuration
Opětovné načtení dat z App Configuration
Azure Functions podporují spouštění v průběhu procesu nebo v izolovaném procesu. Hlavní rozdíl ve využití App Configuration mezi těmito dvěma režimy spočívá v tom, jak se aktualizuje konfigurace. V režimu v procesu musíte provést volání v každé funkci, aby se aktualizovala konfigurace. V režimu izolovaného procesu je k dispozici podpora middlewaru. Middleware Microsoft.Azure.AppConfiguration.Functions.Worker
App Configuration umožňuje automatické volání aktualizace konfigurace před spuštěním jednotlivých funkcí.
Aktualizujte kód, který se připojuje k App Configuration, a přidejte podmínky aktualizace dat.
Otevřete soubor Startup.cs a aktualizujte metodu
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)); }); }
Metoda
ConfigureRefresh
registruje nastavení, které se má zkontrolovat změny při každé aktivaci aktualizace v rámci aplikace. ParametrrefreshAll
dává poskytovateli App Configuration pokyn, aby při každém zjištění změny v registrovaném nastavení znovu načte celou konfiguraci.Všechna nastavení zaregistrovaná k aktualizaci mají výchozí vypršení platnosti mezipaměti 30 sekund před pokusem o novou aktualizaci. Můžete ho aktualizovat voláním
AzureAppConfigurationRefreshOptions.SetCacheExpiration
metody .Tip
Při aktualizaci více hodnot klíčů v App Configuration obvykle nechcete, aby aplikace znovu načítá konfiguraci před provedením všech změn. Klíč služby Sentinel můžete zaregistrovat a aktualizovat pouze po dokončení všech ostatních změn konfigurace. To pomáhá zajistit konzistenci konfigurace ve vaší aplikaci.
Můžete také provést následující kroky, abyste minimalizovali riziko nekonzistence:
- Navrhněte aplikaci tak, aby byla snášená z důvodu přechodné nekonzistentnosti konfigurace.
- Před uvedením aplikace do online režimu zahřejte (obsluhujte žádosti)
- Použití výchozí konfigurace v aplikaci v případě selhání ověření konfigurace
- Zvolte strategii aktualizace konfigurace, která minimalizuje dopad na vaši aplikaci, například kvůli nízkému načasování provozu.
Aktualizujte metodu
Configure
tak, aby byly služby Azure App Configuration dostupné prostřednictvím injektáže závislostí.public override void Configure(IFunctionsHostBuilder builder) { builder.Services.AddAzureAppConfiguration(); }
Otevřete Function1.cs a přidejte následující obory názvů.
using System.Linq; using Microsoft.Extensions.Configuration.AzureAppConfiguration;
Aktualizujte konstruktor tak, aby získal instanci
IConfigurationRefresherProvider
prostřednictvím injektáže závislostí, ze které můžete získat instanci .IConfigurationRefresher
private readonly IConfiguration _configuration; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider) { _configuration = configuration; _configurationRefresher = refresherProvider.Refreshers.First(); }
Aktualizujte metodu
Run
a signál pro aktualizaci konfigurace pomocíTryRefreshAsync
metody na začátku volání functions. Pokud není dosaženo časového intervalu vypršení platnosti mezipaměti, bude se jednat o no-op.await
Pokud chcete, aby se konfigurace aktualizovala bez blokování aktuálního volání functions, odeberte operátor . V takovém případě získají pozdější volání funkcí aktualizovanou hodnotu.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."); }
Místní testování funkce
Nastavte proměnnou prostředí s názvem ConnectionString a nastavte ji na přístupový klíč k úložišti konfigurace aplikací. Pokud používáte příkazový řádek Systému Windows, spusťte následující příkaz a restartujte příkazový řádek, aby se změna projevila:
setx ConnectionString "<connection-string-of-your-app-configuration-store>"
Pokud používáte Windows PowerShell, spusťte následující příkaz:
$Env:ConnectionString = "<connection-string-of-your-app-configuration-store>"
Pokud používáte macOS nebo Linux, spusťte následující příkaz:
export ConnectionString='<connection-string-of-your-app-configuration-store>'
Pokud chcete funkci otestovat, stiskněte F5. Pokud se zobrazí výzva, přijměte požadavek ze sady Visual Studio na stažení a instalaci nástrojů Azure Functions Core (CLI). Možná také budete muset povolit výjimku brány firewall, aby nástroje mohly zpracovávat požadavky HTTP.
Zkopírujte adresu URL vaší funkce z výstupu modulu runtime služby Azure Functions.
Vložte adresu URL pro požadavek HTTP do panelu adresy prohlížeče. Následující obrázek ukazuje odpověď v prohlížeči na místní požadavek GET vrácený funkcí.
Přihlaste se k webu Azure Portal. Vyberte Všechny prostředky a vyberte úložiště App Configuration, které jste vytvořili v rychlém startu.
Vyberte Průzkumník konfigurace a aktualizujte hodnotu následujícího klíče:
Klíč Hodnota TestApp:Settings:Message Data z Azure App Configuration – aktualizováno Pak vytvořte klíč služby Sentinel nebo upravte jeho hodnotu, pokud už existuje, například
Klíč Hodnota TestApp:Settings:Sentinel v1 Několikrát aktualizujte prohlížeč. Po vypršení platnosti nastavení uloženého v mezipaměti po 30 sekundách se na stránce zobrazí odpověď volání funkce s aktualizovanou hodnotou.
Poznámka
Ukázkový kód použitý v tomto kurzu si můžete stáhnout z úložiště App Configuration GitHubu.
Vyčištění prostředků
Pokud nechcete dál používat prostředky vytvořené v tomto článku, odstraňte skupinu prostředků, kterou jste zde vytvořili, abyste se vyhnuli poplatkům.
Důležité
Odstranění skupiny prostředků je nevratné. Skupina prostředků a všechny prostředky v ní se trvale odstraní. Ujistěte se, že omylem neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste prostředky pro tento článek vytvořili ve skupině prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte jednotlivé prostředky z příslušného podokna a neodstraňujte skupinu prostředků.
- Přihlaste se k Azure Portal a vyberte Skupiny prostředků.
- Do pole Filtrovat podle názvu zadejte název skupiny prostředků.
- V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
- Vyberte Odstranit skupinu prostředků.
- Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Zadejte název skupiny prostředků, který chcete potvrdit, a vyberte Odstranit.
Po chvíli se skupina prostředků a všechny její prostředky odstraní.
Další kroky
V tomto kurzu jste aplikaci Azure Functions povolili dynamicky aktualizovat nastavení konfigurace z App Configuration. Pokud chcete zjistit, jak pomocí spravované identity Azure zjednodušit přístup k App Configuration, pokračujte k dalšímu kurzu.