Öğ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
- Azure aboneliği - ücretsiz bir abonelik oluşturun
- Azure geliştirme iş yüküyle Visual Studio
- Visual Studio'da yüklü değilse Azure İşlevleri araçları.
- Hızlı başlangıcı tamamlama Azure Uygulama Yapılandırması ile Azure işlevleri uygulaması oluşturma
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.Worker
her işlev yürütülmeden önce yapılandırmayı otomatik olarak yenileme çağrısını etkinleştirir.
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ştirin
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)); }); }
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ı).
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(); }
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ştirinIConfigurationRefresher
.private readonly IConfiguration _configuration; private readonly IConfigurationRefresher _configurationRefresher; public Function1(IConfiguration configuration, IConfigurationRefresherProvider refresherProvider) { _configuration = configuration; _configurationRefresher = refresherProvider.Refreshers.First(); }
İş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ınawait
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
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'
İş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.
Azure İşlevleri çalışma zamanı çıktısından işlevinizin URL'sini kopyalayın.
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.
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.
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 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.
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.
- Azure portal oturum açın ve Kaynak grupları'nı seçin.
- Ada göre filtrele kutusuna kaynak grubunuzun adını girin.
- Sonuç listesinde, bir genel bakış görmek için kaynak grubu adını seçin.
- Kaynak grubunu sil'i seçin.
- 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.