Azure Fonksiyonlarda Uygulama Ayarlarına Erişim
Bugünün hızlı değişen bulut ortamında, uygulama ayarlarını güvenli ve esnek bir şekilde yönetmek, özellikle Azure Functions ile geliştirenler için kritik öneme sahiptir. İster Azure portalı üzerinden bir işlev uygulaması dağıtıyor olun, Azure Functions Core Tools kullanarak yapılandırma ayarlarını yönetiyor olun veya Key Vault üzerinden sırlar bağlıyor olun, uygulama yapılandırmanızı en baştan doğru bir şekilde yapılandırmanız esastır.
"Console Uygulamalarında AppSettings'e Erişim, Secrets.json Dahil" başlıklı uygulamalı seansta, Tim Corey .NET ekosistemini kullanarak en iyi uygulamaları anlatıyor. Odak noktası konsol uygulamaları olsa da, kavramları doğrudan Azure Functions uygulamalarında işlev uygulama ayarları geliştirme ve yönetme konularına uygulanabilir—özellikle yerelde çalışırken, bir proje dosyası ayarlarken veya App Service'e dağıtım yaparken.
Bu makalede, Tim'in yapısını kullanarak her şeyi inceleyeceğiz ve derslerini modern Azure Functions geliştirmesine haritalandıracağız.
Azure Functions için Uygulama Ayarları Neden Önemlidir
Tim, temel .NET uygulamalarının ötesinde bir şeyler inşa ederken uygulama ayarlarının ne kadar önemli olduğuna değinerek başlıyor. Azure Function ortamlarında yapılandırma ayarlarına erişme ihtiyacı daha da belirgin—çünkü Azure Functions çalışma zamanı, yapılandırma değerlerinin yönetilen mağazalardan (managed stores) çekilmesini bekler, örneğin ortam değişkenleri, JSON tabanlı local.settings.json veya Azure App Configuration.
0:17'de Tim, 'Geliştiricilerin sonunda istediği ortak bir özellik, bir ayar dosyasına erişim.' diye açıklıyor.
İster bir API anahtarı, bir bağlantı dizesi (connection string) veya bir özellik bayrağı (feature flag) olsun, yapılandırma esnekliği ve güvenliği, özellikle Microsoft Azure gibi bulut platformlarına dağıtıldığında çok önemlidir.
Visual Studio ile Temeli Oluşturma
1:24'de Tim, Visual Studio kullanarak bir console projesi kuruyor, bunu SettingsDemoApp olarak adlandırıyor. Azure geliştiricileri normalde bir Functions projesini Azure Functions Core Tools kullanarak başlatırlardı ama Tim'in kodu yapılandırma ve düzenleme yöntemi sorunsuz bir şekilde tercüme ediliyor. Proje dosyası yapılandırması ve kod yapısı, ister console ortamında olun, ister yalıtılmış işleyici modeli (isolated worker model) ile bir yalıtılmış Azure Functions uygulaması oluşturuyor olun, önemli temellerdir.
Gerekli NuGet Paketlerini Yükleyin
2:33'ten itibaren Tim, dört temel NuGet paketinin yüklenmesini anlatıyor:
Microsoft.Extensions.Configuration
Microsoft.Extensions.Configuration.Json
Microsoft.Extensions.Configuration.Binder
- Microsoft.Extensions.Configuration.UserSecrets
Bu, Azure Functions'ın arka planda aynı paketlere dayanan yapılandırma sistemini yansıtıyor. Tim, modülerliğin değerini vurguluyor:
'.NET Core gereksiz yükleri önleyerek geliştiricilerin NuGet üzerinden opt-in yapmasına izin vererek 'şişkin' olmayan tam tersidir diye not ediyor.
Tipik bir fonksiyon uygulaması için bu paketler ya önceden referanslanmış ya da yapılandırma ayarları, bağımlılık enjeksiyonu veya Key Vault ve Azure App Configuration gibi gelişmiş kullanımları desteklemek için kolayca eklenebilir.
JSON Ayar Dosyası Ekleme ve Yapılandırma
6:12'de Tim, Azure Functions geliştirmesi için local.settings.json'da göreceğiniz yapıyı taklit eden appsettings.json adlı yeni bir dosya oluşturuyor. Anahtar-değer çiftleriyle dolduruyor:
{
"User": {
"FirstName": "Tim",
"LastName": "Corey"
},
"StarterCountValue": 5
}Yerel fonksiyonlar için, geliştiriciler uygulama mantıklarının içine, bağımlılık enjeksiyonu yoluyla değerler okumak için neredeyse aynı formatta local.settings.json kullanır. Tim ayrıca önemli bir adımı vurguluyor: dosyanın Çıkış Dizini Kopyalama (Copy to Output Directory) ayarını "Yeni ise kopyala" olarak belirlemek— bu, yapılandırmanın çalışma zamanında erişilir olmasını sağlamada kritik önem taşır.
Yapılandırma Boru Hattını Manuel Olarak Kurma
Tim, yapılandırma boru hattını manuel olarak kuran kodu yazmaya devam ederken:
var builder = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory())
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true);Her ne kadar Azure Functions çalışma zamanı bu boru hattını otomatik olarak yönetse de, Tim'in parçalama (breakdown) işlemi, fonksiyon projelerinin değerleri farklı kaynaklardan nasıl çektiğini açıklar. .AddJsonFile() kullanım şekli, Azure uygulamalarında local.settings.json'ı yapılandırmada nasıl yansıttığını gösterir, reloadOnChange, geliştirme sırasında dinamik olarak yenilenen yapılandırma ayarları kavramını tanıtır.
Tür Güvenliği ile Değerleri Okuma
Tim, ayarları GetValue() metodunu kullanarak nasıl okuyacağını 11:00'da gösteriyor:
int count = config.GetValue<int>("StarterCountValue");Ve iç içe geçmiş ayarlar için, şunu kullanır:
string firstName = config.GetValue<string>("User:FirstName");Azure Functions ile çalışırken, bu aynı sözdizimi kalıpları geçerlidir. Tim'in iki nokta üst üste anahtarlarından ('User:FirstName') (colon-delimited keys) yararlanması, ortam değişkenleri kullanıldığında çift alt çizgi (__) sözdizimi ile doğrudan eşleşme sağlar:
User__FirstName=TimBu özellikle Azure App Service'e dağıtıldığında veya Azure portalı üzerinden yapılandırma yapılırken kullanışlıdır; burada uygulama ayarlarını veya ortam tabanlı geçersiz kılmaları (overrides) kullanarak çalışma zamanında ayarları geçersiz kılabilirsiniz.
Secrets.json ile Sırları Güvenli Şekilde Yönetme
15:00'de Tim, kaynak kontrolünde açıklanmadan API anahtarları veya bağlantı dizeleri gibi hassas verileri saklamak için User Secrets aracılığıyla secrets.json modelini tanıtır. Bu satırla projenize bir Kullanıcı Sırları (User Secrets) deposu bağlamayı gösterir:
builder.AddUserSecrets<Program>();Sıranın önemli olduğunu vurgular — Kullanıcı Sırları önceki yapılandırma kaynaklarını geçersiz kılar, sonuncusu kazanır ilkesi pekişir. Azure Functions doğrudan secrets.json kullanmasa da, bir üretim bulut ortamında, anahtarı güvenli bir şekilde geçersiz kılmak için yönetilen cihaz (managed identity) kimlik doğrulaması ile Azure Key Vault kullanırsınız.
Tim, yerel geliştirmedeki sırların üretimde kullandığınız her ne ise güvenli sistemin yerini aldığını belirtir:
'Bu secrets.json, gerçek değerlerinizi saklamak için kullandığınız her ne ise güvenli sistemin sembolüdür—bu Key Vault ya da ortam ayarları olabilir.'
Yapılandırmaları Çalıştırma ve Doğrulama
Tim, hem appsettings.json hem de secrets.json kurduktan sonra örneği çalıştırır ve sırların temel değerleri geçersiz saydığını doğrular. Bu doğrudan, Azure Functions'ın, local.settings.json, Azure App Configuration, ortam değişkenleri veya Key Vault'dan gelen birden fazla kaynaktan yapılan geçersiz saymaları nasıl işlediğini yansıtır.
İster komut satırından Azure Functions Core Tools kullanıyor olun, ister Visual Studio aracılığıyla dağıtım yapıyor olun, uygulama yapılandırması yükleme sırası ve tabakalanması tam olarak Tim'in açıkladığı gibi davranır.
Yapılandırma Yönetimi için En İyi Uygulamalar
Tim, özellik bayrakları (feature flags), frekans ayarları veya CORS yapılandırmaları gibi sık değişmeyen yapılandırma değerlerini JSON dosyanızda tutmanızı, ve bağlantı dizeleri ve sırlar gibi hassas verileri güvenli bir depoda tutmanızı önererek sonlandırıyor.
Bu modern Azure Functions için en iyi uygulamalarla uyumludur:
Geliştiriciler yerel fonksiyonlar için local.settings.json kullanır
Ekipler uygulama ayarları için Azure portalını kullanır
Sırlar Key Vault'a gider
- Koddan ayarları ayırmaya yardımcı olan Azure App Configuration mağazası değerleri
Bu kaynaklar, uygulama ikili dosyalarına dokunmadan, bağımlılık enjeksiyonu ile çalışma zamanı ile entegre olur.
Son Düşünceler
Tim'in videosu console uygulamaları üzerine olsa da, öğrettiği her teknik, yapılandırma dosyalarını oluşturma, anahtarları okuma, yönetilen kimlik kullanma ve bağımlılık enjeksiyonu yoluyla yapılandırma yükleme konularında Azure Functions uygulamalarına sorunsuz şekilde uyarlanır. İster Visual Studio ile dağıtım yapıyor olun, ister Azure hesabınızı yönetiyor olun, ya da tam kod örnekleri bulmaya çalışıyor olun, onun içgörüleri doğrudan gerçek dünya bulut uygulamalarına haritalandırılır.

