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

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.WorkerApp Configuration umožňuje automatické volání aktualizace konfigurace před spuštěním jednotlivých funkcí.

  1. 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. Parametr refreshAll 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.
  1. 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();
    }
    
  2. 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();
    }
    
  3. 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

  1. 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'
    
  2. 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.

  3. Zkopírujte adresu URL vaší funkce z výstupu modulu runtime služby Azure Functions.

    Rychlé zprovoznění ladění funkcí ve VS

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

    Rychlý start Spuštění funkce místně

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

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

    Rychlý start Aktualizace funkce místně

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

  1. Přihlaste se k Azure Portal a vyberte Skupiny prostředků.
  2. Do pole Filtrovat podle názvu zadejte název skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, abyste zobrazili přehled.
  4. Vyberte Odstranit skupinu prostředků.
  5. 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.