Kurz: použití dynamické konfigurace v aplikaci Azure Functions

Zprostředkovatel konfigurace .NET konfigurace aplikace podporuje ukládání do mezipaměti a dynamicky se aktualizuje pomocí aktivity aplikace. V tomto kurzu se dozvíte, jak můžete implementovat aktualizace dynamické konfigurace do kódu. Sestavuje se v aplikaci Azure Functions představené v rychlých startech. Než budete pokračovat, dokončete nejprve možnost vytvořit aplikaci Azure Functions s konfigurací Azure App Configuration .

V tomto kurzu se naučíte:

  • Nastavte si aplikaci Azure Functions pro aktualizaci konfigurace v reakci na změny v úložišti konfigurace aplikace.
  • Vloží nejnovější konfiguraci do vašich Azure Functions volání.

Požadavky

Znovu načíst data z konfigurace aplikace

  1. Otevřete Startup. cs a aktualizujte ConfigureAppConfiguration metodu.

    ConfigureRefreshMetoda registruje nastavení, které bude kontrolovat změny vždy, když se aktivuje aktualizace v rámci aplikace, kterou provedete v pozdějším kroku při přidávání _configurationRefresher.TryRefreshAsync() . refreshAllParametr nastaví poskytovatele konfigurace aplikace tak, aby znovu znovu nahlásil celou konfiguraci při zjištění změny v registrovaném nastavení.

    Všechna nastavení zaregistrovaná pro obnovení mají výchozí dobu platnosti mezipaměti 30 sekund. Dá se aktualizovat voláním AzureAppConfigurationRefreshOptions.SetCacheExpiration metody.

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

    Tip

    Když aktualizujete více hodnot klíče v konfiguraci aplikace, normálně nechcete, aby aplikace znovu znovu načítat konfiguraci před provedením všech změn. Můžete zaregistrovat klíč Sentinel a aktualizovat ho pouze v případě, že jsou dokončeny všechny ostatní změny konfigurace. To pomáhá zajistit konzistenci konfigurace ve vaší aplikaci.

  2. Aktualizujte Configure metodu tak, aby byly dostupné služby Azure App Configuration prostřednictvím injektáže závislostí.

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddAzureAppConfiguration();
    }
    
  3. 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ávislosti, 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();
    }
    
  4. Aktualizujte Run metodu a signál pro aktualizaci konfigurace pomocí TryRefreshAsync metody na začátku volání funkce. Pokud není dosaženo časového intervalu vypršení platnosti mezipaměti, bude to no-op. awaitPokud dáváte přednost konfiguraci, která se má aktualizovat bez blokování aktuálních volání funkcí, odeberte operátor. V takovém případě se později volání funkcí zobrazí aktualizovaná hodnota.

    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íč na úložiště konfigurace aplikace. pokud použijete příkazový řádek 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 žádost z Visual Studio ke stažení a instalaci nástrojů Azure Functions Core (CLI) . Je také možné, že 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é ladění funkcí v VS

  4. Vložte adresu URL pro požadavek HTTP do panelu adresy prohlížeče. Na následujícím obrázku je znázorněna odpověď v prohlížeči na místní požadavek GET vrácený funkcí.

    Rychlé spuštění funkce spustit místně

  5. Přihlaste se k webu Azure Portal. Vyberte všechny prostředky a vyberte úložiště konfigurace aplikace, 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: Nastavení: zpráva Data z konfigurace aplikace Azure – Aktualizováno

    Pak vytvořte klíč Sentinel nebo změňte jeho hodnotu, pokud již existuje, například

    Klíč Hodnota
    TestApp: Nastavení: Sentinel v1
  7. Aktualizujte prohlížeč několikrát. Pokud platnost nastavení v mezipaměti vyprší po 30 sekundách, stránka zobrazuje odpověď volání funkcí s aktualizovanou hodnotou.

    Funkce rychlého startu – místní aktualizace

Poznámka

vzorový kód použitý v tomto kurzu si můžete stáhnout z části konfigurace aplikace GitHub úložiště.

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 tady vytvořili, abyste předešli 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 nechtěně neodstraníte nesprávnou skupinu prostředků nebo prostředky. Pokud jste vytvořili prostředky pro tento článek v rámci skupiny prostředků, která obsahuje další prostředky, které chcete zachovat, odstraňte všechny prostředky jednotlivě z příslušného podokna, místo aby se odstranila skupina prostředků.

  1. Přihlaste se k Azure Portala vyberte skupiny prostředků.
  2. Do pole filtrovat podle názvu zadejte název vaší skupiny prostředků.
  3. V seznamu výsledků vyberte název skupiny prostředků, aby se zobrazil přehled.
  4. Vyberte Odstranit skupinu prostředků.
  5. Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Zadejte název vaší skupiny prostředků, který chcete potvrdit, a vyberte Odstranit.

Po chvíli se odstraní skupina prostředků a všechny její prostředky.

Další kroky

V tomto kurzu jste povolili aplikaci Azure Functions k dynamické aktualizaci nastavení konfigurace z konfigurace aplikace. Další informace o tom, jak používat spravovanou identitu Azure ke zjednodušení přístupu ke konfiguraci aplikace, najdete v dalším kurzu.