Aracılığıyla paylaş


Öğretici: Azure İşlevleri uygulamasında dinamik yapılandırma kullanma

Uygulama Yapılandırması .NET yapılandırma sağlayıcısı, uygulama etkinliği tarafından dinamik olarak yönetilen yapılandırmayı önbelleğe almayı ve yenilemeyi destekler. Bu öğretici, kodunuzda dinamik yapılandırma güncelleştirmelerini nasıl uygulayabileceğinizi gösterir. Hızlı başlangıçlarda tanıtılan Azure İşlevleri uygulamasını temel alır. Devam etmeden önce önce Azure Uygulama Yapılandırması ile Azure işlevleri uygulaması oluşturma işlemini tamamlayın.

Bu öğreticide şunların nasıl yapıldığını öğreneceksiniz:

  • Uygulama Yapılandırması deposundaki değişikliklere yanıt olarak yapılandırmasını güncelleştirmek için Azure İşlevleri uygulamanızı ayarlayın.
  • en son yapılandırmayı Azure İşlevleri çağrılarınıza ekleme.

Önkoşullar

Uygulama Yapılandırması'den verileri yeniden yükleme

Azure İşlevleri işlem içinde veya yalıtılmış işlem çalıştırmayı destekler. İki mod arasındaki Uygulama Yapılandırması kullanımındaki temel fark, yapılandırmanın nasıl yenilendiğidir. İşlem modunda, yapılandırmayı yenilemek için her işlevde bir çağrı yapmanız gerekir. Yalıtılmış işlem modunda ara yazılım desteği vardır. Uygulama Yapılandırması ara yazılımı, Microsoft.Azure.AppConfiguration.Functions.Workerher işlev yürütülmeden önce yapılandırmayı otomatik olarak yenileme çağrısını etkinleştirir.

  1. Uygulama Yapılandırması bağlanan kodu güncelleştirin ve veri yenileme koşullarını ekleyin.

    Startup.cs dosyasını açın ve yöntemini güncelleştirinConfigureAppConfiguration.

    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));
        });
    }
    

    yöntemi, ConfigureRefresh uygulama içinde bir yenileme tetiklendiğinde değişiklikler için denetlenecek bir ayar kaydeder. parametresi, refreshAll kayıtlı ayarda bir değişiklik algılandığında Uygulama Yapılandırması sağlayıcısına yapılandırmanın tamamını yeniden yüklemesini sağlar.

    Yenileme için kaydedilen tüm ayarların, yeni bir yenileme denenmeden önce varsayılan önbellek süre sonu 30 saniyedir. yöntemi çağrılarak AzureAppConfigurationRefreshOptions.SetCacheExpiration güncelleştirilebilir.

    İpucu

    Uygulama Yapılandırması'de birden çok anahtar değerini güncelleştirirken, normalde tüm değişiklikler yapılmadan önce uygulamanızın yapılandırmayı yeniden yüklemesini istemezsiniz. Sentinel anahtarını kaydedebilir ve yalnızca diğer tüm yapılandırma değişiklikleri tamamlandığında güncelleştirebilirsiniz. Bu, uygulamanızdaki yapılandırmanın tutarlılığını sağlamaya yardımcı olur.

    Tutarsızlık riskini en aza indirmek için aşağıdakileri de yapabilirsiniz:

    • Uygulamanızı geçici yapılandırma tutarsızlığı için dayanıklı olacak şekilde tasarlama
    • Uygulamanızı çevrimiçine getirmeden önce (istek sunma) ısıtma
    • Uygulamanızda varsayılan yapılandırmayı taşıyın ve yapılandırma doğrulaması başarısız olduğunda kullanın
    • Uygulamanızın etkisini en aza indiren bir yapılandırma güncelleştirme stratejisi seçin( örneğin, düşük trafik zamanlaması).
  1. Configure Azure Uygulama Yapılandırması hizmetlerini bağımlılık ekleme yoluyla kullanılabilir hale getirmek için yöntemini güncelleştirin.

    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddAzureAppConfiguration();
    }
    
  2. Function1.cs dosyasını açın ve aşağıdaki ad alanlarını ekleyin.

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

    örneğini elde etmek için oluşturucuyu bağımlılık ekleme yoluyla örneğini IConfigurationRefresherProvider almak üzere güncelleştirin IConfigurationRefresher.

    private readonly IConfiguration _configuration;
    private readonly IConfigurationRefresher _configurationRefresher;
    
    public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider)
    {
        _configuration = configuration;
        _configurationRefresher = refresherProvider.Refreshers.First();
    }
    
  3. İşlevler çağrısının başındaki Run yöntemini kullanarak yapılandırmayı TryRefreshAsync yenilemek için yöntemini ve sinyalini güncelleştirin. Önbellek süre sonu penceresine ulaşılamıyorsa işlem yapılmaz. Yapılandırmanın await geçerli İşlevler çağrısını engellemeden yenilenmesini tercih ediyorsanız işlecini kaldırın. Bu durumda, sonraki İşlevler çağrıları güncelleştirilmiş değer alır.

    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.");
    }
    

İşlevi yerel olarak test etme

  1. ConnectionString adlı bir ortam değişkeni ayarlayın ve bunu uygulama yapılandırma deponuzun erişim anahtarına ayarlayın. Windows komut istemini kullanıyorsanız, değişikliğin etkili olması için aşağıdaki komutu çalıştırın ve komut istemini yeniden başlatın:

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

    Windows PowerShell kullanıyorsanız aşağıdaki komutu çalıştırın:

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

    macOS veya Linux kullanıyorsanız aşağıdaki komutu çalıştırın:

    export ConnectionString='connection-string-of-your-app-configuration-store'
    
  2. İşlevinizi test etmek için F5’e basın. İstenirse Visual Studio'dan Azure İşlevleri Core (CLI) araçlarını indirme ve yükleme isteğini kabul edin. Araçların HTTP isteklerini işleyebilmesi için bir güvenlik duvarı özel durumunu da etkinleştirmeniz gerekebilir.

  3. Azure İşlevleri çalışma zamanı çıktısından işlevinizin URL'sini kopyalayın.

    Vs'de Hızlı Başlangıç İşlevi hata ayıklama

  4. HTTP isteğinin URL’sini tarayıcınızın adres çubuğuna yapıştırın. Aşağıdaki görüntüde, işlev tarafından döndürülen yerel GET isteğine tarayıcıda verilen yanıt gösterilmektedir.

    Hızlı Başlangıç İşlevi yerel başlatma

  5. Azure Portal’ında oturum açın. Tüm kaynaklar'ı seçin ve hızlı başlangıçta oluşturduğunuz Uygulama Yapılandırması depoyu seçin.

  6. Yapılandırma gezgini'ni seçin ve aşağıdaki anahtarın değerini güncelleştirin:

    Anahtar Değer
    TestApp:Ayarlar:İleti Azure Uygulama Yapılandırması verileri - Güncelleştirildi

    Ardından sentinel anahtarını oluşturun veya zaten varsa değerini değiştirin, örneğin,

    Anahtar Değer
    TestApp:Ayarlar:Sentinel v1
  7. Tarayıcıyı birkaç kez yenileyin. Önbelleğe alınan ayarın süresi 30 saniye sonra dolduğunda, sayfa İşlevler çağrısının yanıtını güncelleştirilmiş değerle gösterir.

    Hızlı Başlangıç İşlevi yerel yenileme

Not

Bu öğreticide kullanılan örnek kod Uygulama Yapılandırması GitHub deposundan indirilebilir.

Kaynakları temizleme

Bu makalede oluşturulan kaynakları kullanmaya devam etmek istemiyorsanız ücret ödememek için burada oluşturduğunuz kaynak grubunu silin.

Önemli

Silinen kaynak grupları geri alınamaz. Kaynak grubu ve içindeki tüm kaynaklar kalıcı olarak silinir. Yanlışlıkla yanlış kaynak grubunu veya kaynakları silmediğinizden emin olun. Bu makalenin kaynaklarını tutmak istediğiniz diğer kaynakları içeren bir kaynak grubu içinde oluşturduysanız, kaynak grubunu silmek yerine her kaynağı ilgili bölmeden tek tek silin.

  1. Azure portal oturum açın ve Kaynak grupları'nı seçin.
  2. Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
  3. Sonuç listesinde, bir genel bakış görmek için kaynak grubu adını seçin.
  4. Kaynak grubunu sil'i seçin.
  5. Kaynak grubunun silinmesini onaylamanız istenir. Onaylamak için kaynak grubunuzun adını girin ve Sil'i seçin.

Birkaç dakika sonra kaynak grubu ve tüm kaynakları silinir.

Sonraki adımlar

Bu öğreticide, Azure İşlevleri uygulamanızın yapılandırma ayarlarını Uygulama Yapılandırması dinamik olarak yenilemesini etkinleştirmişsinizdir. Azure yönetilen kimliğini kullanarak Uygulama Yapılandırması erişimi kolaylaştırmayı öğrenmek için sonraki öğreticiye geçin.