Azure İşlevleri'te bağlantıları uzak servislere configure et

Bu makale, Azure İşlevleri'ın uzak hizmetlere nasıl bağlandığına dair birincil referanstır. Bağlantı türü ve kimlik doğrulama yöntemine dayalı özel rehberlik sağlar.

Important

Mümkün olduğunda Microsoft Entra ID ile yönetilen kimlikleri kullanın. Bu kimlik doğrulama yöntemi sırları ortadan kaldırır ve en yüksek güvenliği sağlar.

Bağlantı kategorileri

Azure İşlevleri bağlantıları şu temel kategorilere ayrılır:

  • Sunucu gerekli: Fonksiyon sunucusunun çalışması için ihtiyaç duyduğu bağlantılar, örneğin depolama ve izleme.
  • Bağlamalar: Tetikleyiciler ve bağlamalar için ana bilgisayarın yönettiği bağlantılar.
  • İstemci SDK: Kendi fonksiyon kodunda oluşturup yönettiğiniz bağlantılar.

İpucu

Functions ayrıca yönetilen bağlantıları (önizlemede) destekler; bu da Office 365, Teams ve SharePoint gibi servislere dahili OAuth ve webhook işleme ile Connector Namespace üzerinden bağlanmanızı sağlar. Daha fazla bilgi için Azure İşlevleri'da bağlayıcıları kullanma konusuna bakın.

Functions barındırıcısı, uygulamanızın hem fonksiyon çalıştırmalarını hem de loglamayı destekleyen bu özel adlandırılmış bağlantılara sahip olmasını gerektirir:

Kimlik doğrulama yöntemleri

Important

Mümkünse, bağlantılarınız için yönetilen kimlikler kullanın. Bu yaklaşım sırları tamamen ortadan kaldırır. Hedef hizmet Microsoft Entra ID kimlik doğrulamasını desteklemiyorsa, sırları merkezi olarak yönetmek için Azure Key Vault kullanın. Paylaşılan sırları sadece uygulama ayarlarında doğrudan son çare olarak kullanın.

Functions, uzak hizmetlere bağlanırken şu kimlik doğrulama yöntemlerini destekler:

Kimlik doğrulama yöntemi Güvenlik Ne zaman kullanılır?
Yönetilen kimlikler En Yüksek Target servisi, Microsoft Entra ID'yi destekler. Yönetilecek gizli bilgi yok.
Azure Key Vault High Servis, yönetilen kimlikleri desteklemiyor ya da rotasyon ile merkezi gizli yönetim gerekiyor.
Paylaşılan sır Low Eski varsayılan. Mümkün olan en kısa sürede yönetilen kimliklere veya Key Vault'a geçiş yapın.

Detaylı yapılandırma rehberliğini görmek için makalenin başında tercih ettiğiniz kimlik doğrulama yöntemini seçin.

Bağlantıları tanımlayın

Çalışma zamanında, fonksiyon uygulamanız bağlantı bilgilerine şu konumlardan ortam değişkenleri olarak erişir:

Çevre Ayarların saklandığı yer
Azure Uygulama ayarları (depolanırken şifrelenir)
Yerel geliştirme local.settings.json (isteğe bağlı olarak şifreli)

Her iki ortamda da, ayarlar kodunuza ortam değişkeni olarak maruz kalır. İhtiyacınız olan özel ayarlar hem bağlantı türüne hem de seçtiğiniz kimlik doğrulama yöntemine bağlıdır.

Microsoft Entra doğrulamasını kullanarak bir Azure servisine bağlandığınızda, kullandığınız özel uygulama ayarları bağlantılı hizmete ve bağlantıyı doğrulamak için sistem tarafından atanan veya kullanıcı tarafından atanan bir kimlik kullanıp kullanmadığınıza bağlıdır.

Bağlantılarınız için kullandığınız kimlikler, amaçlanan eylemleri gerçekleştirme izinlerine sahip olmalıdır. Çoğu Azure hizmeti için bu gereklilik, Azure RBAC'te bu izinleri sağlayan yerleşik veya özel roller kullanarak bir rol atamanız gerektiği anlamına gelir. Daha fazla bilgi için bkz. Bir kimliğe izin verin.

Kimlik temelli bağlantıları kullanırken şu hususları aklınızda bulundurun:

  • Fonksiyonlar barındıran bir uygulamada, kimlik tabanlı bağlantılar yönetilen bir kimlik kullanır. Uygulamanıza özgü olan sistem tarafından atanan kimlik, varsayılan olarak kullanılır. Ancak, *__credential ve *__clientID özelliklerini de gerektiren kullanıcı tarafından atanan kimlikler daha esnektir ve önerilir.

  • Uygulamanız yerel geliştirme gibi başka bağlamlarda çalıştığında, geliştirici kimliğiniz kullanılır. Daha fazla bilgi için yerel kalkınma makalesine bakınız.

  • Kimlik tabanlı bağlantılar yalnızca Functions çalışma zamanının 4.x ve daha sonraki sürümlerinde desteklenmektedir. Eğer Functions çalışma zamanının 1.x sürümünde eski bir C# uygulaması çalıştırıyorsanız, önce 4.x sürümüne geçiş yapmalısınız.

Varsayılan depolama hesabına (AzureWebJobsStorage) ve diğer ana bilgisayar gerektiren bağlantılara bağlanırken fonksiyon uygulamanızı bağlantı dizesi yerine bir kimlik kullanacak şekilde ayarlayabilirsiniz.

Yönetilen kimlik desteği AzureWebJobsStorage barındırma planına göre değişir:

Barındırma planı Ana depolama için MI Azure Dosyalar gereksinimi Recommendation
Esnek Tüketim Tam destek Yok (Azure Dosyaları yok) MI için tavsiye edilir
Özel (App Service) Tam destek Yok (dinamik ölçeklendirme yok) Tam MI, çözüm gerek yok
Tüketimi Bloblar, kuyruklar, tablolar Key Vault veya Azure Dosyalar'ı kaldır WEBSITE_CONTENTAZUREFILECONNECTIONSTRING öğesini Key Vault'ta depolayın
Elastik Premium Bloblar, kuyruklar, tablolar Key Vault veya Azure Dosyalar'ı kaldır WEBSITE_CONTENTAZUREFILECONNECTIONSTRING öğesini Key Vault'ta depolayın

Host gerektiren bağlantılar için yönetilen kimlikleri kullanmadan önce şu sınırlamaları göz önünde bulundurun:

  • Tüketim ve Premium planlar için, Azure Dosyalar için şu çözümlerden birini uygulayın:

    • Sadece bağlantı dizesi'i WEBSITE_CONTENTAZUREFILECONNECTIONSTRING Key Vault'ta saklayın, bu en güvenli bir sonraki seçenektir.
    • Azure Dosyalar olmadan çalışan bir Consumption veya Premium plan uygulaması oluşturun. Azure Dosyalar olmadan çalışırken performans etkileri yaşanır. Daha fazla bilgi için bkz. Azure Dosyalar olmadan uygulama oluşturma.
  • Bu tetikleyiciler düzgün çalışmak için AzureWebJobsStorage öğesine bağlıdır:

    • Azure Blob Depolama (Microsoft'un bulut depolama hizmeti)
    • Azure Event Hubs
    • Dayanıklı İşlevler (varsayılan olarak)
    • Timer

    Uygulamanız bu uzantılardan herhangi birini kullanıyorsa, sürümünün de yönetilen kimlikleri desteklediğinden emin olun.

  • AzureWebJobsStorage Linux Tüketim planındaki sunucu taraflı (uzak) derlemelerde dağıtım artefaktlarını korur. Bu durumda, uygulamanızı harici bir dağıtım paketinden dağıtmalı ve çalıştırmalısınız.

  • Fonksiyon uygulamanızın diğer bileşenleri bağlantıyı AzureWebJobsStorage yeniden kullanabilir; bunlar arasında depolama bağlama uzantıları veya Azure SDK kullanılarak oluşturulan depolama istemcileri de olabilir. Yönetilen kimlikler kullanılırken, yönetilen kimlikleri destekleseler bile, bu ana bilgisayar dışı bileşenler için yeni uygulama ayarları oluşturun.

Bu özel uygulama ayarları, hem AzureWebJobsStorage de APPLICATIONINSIGHTS_CONNECTION_STRINGile kimlik tabanlı bağlantıları tanımlar. Standart Azure DNS uç noktalarını kullanan bir depolama hesabı için AzureWebJobsStorage__accountName değerini ayarlayın. Bunun yerine, egemen buluttaki veya özel DNS kullanan bir depolama hesabı için hizmete özgü üç URI ayarını yapın.

Setting Description
AzureWebJobsStorage__accountName Varsayılan depolama hesabının adı. Hesap standart Azure DNS uç noktalarını kullandığında bu ayarı kullanın. Bu sözdizimi yalnızca AzureWebJobsStorage'ye özgüdür.
AzureWebJobsStorage__blobServiceUri Varsayılan depolama hesabındaki Blob Depolama için URI. Egemen bulutlar veya özel depolama DNS'leri için gereklidir, örneğin: https://mystorageaccount.blob.contoso.com. HTTPS gereklidir.
AzureWebJobsStorage__queueServiceUri Varsayılan depolama hesabındaki Kuyruk Depolama için URI. Egemen bulutlar veya özel depolama DNS'leri için gereklidir, örneğin: https://mystorageaccount.queue.contoso.com. HTTPS gereklidir.
AzureWebJobsStorage__tableServiceUri Varsayılan depolama hesabındaki Tablo Depolama için URI. Egemen bulutlar veya özel depolama DNS'leri için gereklidir, örneğin: https://mystorageaccount.table.contoso.com. HTTPS gereklidir.
AzureWebJobsStorage__credential Yönetilen kimlik doğrulamasını kullanmak için managedidentity olarak ayarlayın. Yönetilen bir kimlik barındırma ortamında mevcut olmalıdır.
AzureWebJobsStorage__clientId veya
AzureWebJobsStorage__managedIdentityResourceId
Yönetilen kimlik doğrulaması için erişim tokenı elde etmek amacıyla kullanılan belirli bir kullanıcı tarafından atanan kimlik döndürür. Hiçbiri ayarlanmadığında, uygulamanın sistem tarafından atanan kimliği kullanılır.
APPLICATIONINSIGHTS_AUTHENTICATION_STRING Microsoft Entra kimlik doğrulaması kullanılarak Application Insights bağlantılarını etkinleştirir. Ya Authorization=AAD (sistem tarafından atanan) ya ClientId=<YOUR_CLIENT_ID>;Authorization=AAD da (kullanıcı tarafından atanan) olarak ayarlanabilir.

Çift alt çizgi değeri (__) çalışma zamanında iki nokta (): olarak yorumlandığı için, ayar dizisi nesnenin AzureWebJobsStorage özellikleri olarak yorumlanır. Depolama hesabı yapılandırmanıza uyan örneği seçin.

Azure WebJobsStorage için standart Azure DNS endpoints kullanın

Standart Azure DNS uç noktalarını kullanan bir depolama hesabı için şu uygulama ayarlarını kullanın:

  • AzureWebJobsStorage__accountName=<ACCOUNT_NAME>
  • AzureWebJobsStorage__credential=managedidentity
  • AzureWebJobsStorage__clientId=<MY_USER_ASSIGNED_IDENTITY_ID>

Çalışma zamanında, ana bilgisayar bu ayarları karmaşık AzureWebJobsStorage bir ayar olarak yorumlar:

"AzureWebJobsStorage":
{
    "accountName": "<ACCOUNT_NAME>",
    "credential": "managedidentity",
    "clientId": "<MY_USER_ASSIGNED_IDENTITY_ID>"
}

AzureWebJobsStorage için özel DNS veya sovereign cloud endpoints kullanın

Özel DNS kullanan veya egemen bir bulutta bulunan bir depolama hesabı için şu uygulama ayarlarını kullanın:

  • AzureWebJobsStorage__blobServiceUri=https://<ACCOUNT_NAME>.blob.contoso.com
  • AzureWebJobsStorage__queueServiceUri=https://<ACCOUNT_NAME>.queue.contoso.com
  • AzureWebJobsStorage__tableServiceUri=https://<ACCOUNT_NAME>.table.contoso.com
  • AzureWebJobsStorage__credential=managedidentity
  • AzureWebJobsStorage__clientId=<MY_USER_ASSIGNED_IDENTITY_ID>

Çalışma zamanında, ana bilgisayar bu ayarları karmaşık AzureWebJobsStorage bir ayar olarak yorumlar:

"AzureWebJobsStorage":
{
    "blobServiceUri": "https://<ACCOUNT_NAME>.blob.contoso.com",
    "queueServiceUri": "https://<ACCOUNT_NAME>.queue.contoso.com",
    "tableServiceUri": "https://<ACCOUNT_NAME>.table.contoso.com",
    "credential": "managedidentity",
    "clientId": "<MY_USER_ASSIGNED_IDENTITY_ID>"
}

Ayrıca, varsayılan depolama hesabında kimlik için izinler vermeniz gerekir ki ana bilgisayar gerekli görevleri yerine getirebilmek için yeterli izinle bağlanabilsin. Bunun nasıl yapılacağını öğrenmek için bir kimliğe izin verme bölümüne bakın.

Bir kimliğe izin verin

Microsoft Entra ID kimlik doğrulama ile yönetilen kimlikleri kullandığınızda, uygulamanızın uzak hizmete bağlantı kurarken kullandığı kimliğe özel olarak izin vermeniz gerekir. Uygulamanıza en az ayrıcalıklı izinler vermenin en kolay yolu, yerleşik roller atamaktır.

Uygulamanızın kimliklerine RBAC izinleri verirken şu önerileri aklınızda bulundurun:

  • Mümkün olduğunda, en az ayrıcalık ilkesine uyarak kimliğe yalnızca gerekli minimum ayrıcalıkları verin. Örneğin, uygulama sadece bir veri kaynağından okuması gerekiyorsa, sadece okuma iznine sahip olan ve veri yazma izni olmayan bir rol kullanın.
  • Sadece uygulamayı çalıştırmak için bile Owner gibi geniş yerleşik rolleri kullanmayın.
  • Bir rol ataması oluşturduktan veya değiştirdikten sonra, değişikliğin yayılması 10 dakikaya kadar sürebilir. Bu süre zarfında, rol doğru atanmış olsa bile işleviniz yetkilendirme hataları (403) alabilir. Bir rol ataması oluşturduktan hemen sonra hatalarla karşılaşırsanız, birkaç dakika bekleyin ve tekrar deneyin.
  • Birden fazla bağlantı aynı hizmete izin gerektirdiğinde, o hizmete tüm bağlantılar için minimum izin alt kümesi olan rolü kullanın.
  • Birçok bağlama, depolama hesabınızda AzureWebJobsStorage bağlantısının gerektirdiğinden daha kapsamlı izinler gerektirir.
  • Key Vault'ta yönetilen kimliklerle anahtarlara erişmek için uygulamanızı Key Vault Secrets Kullanıcı rolüne atayın. Ayrıca Key Vault erişim politikası kullanarak yönetilen kimliğe Get secrets izni atayabilirsiniz. Daha fazla bilgi için, uygulamanızdaki bir kimliğe anahtar kasanıza erişim izni verme konusuna bakın.
  • Bu makale yalnızca minimum izinler sağlayan yerleşik rollere atıfta bulunur. Uygulama gereksinimlerinize bağlı olarak, kendi özel rollerinizi oluşturmanız gerekebilir.

İhtiyacınız olan izinler, bağlantı türüne bağlıdır:

  • AzureWebJobsStorage: Depolama Blobu Veri Sahibi rolü, ana bilgisayar gerektiren AzureWebJobsStorage bağlantı için minimum depolama hesabı izinlerini sağlar. Bu rol, Fonksiyon sunucusunun ihtiyaç duyduğu depolama erişim seviyesini sağlar ve en az ayrıcalık ilkesini takip eder.

    Bazı sorun türleri için, Functions uygulamanız açılmasa bile arıza gidermenize yardımcı olmak için tanı olaylarını başlatabilir. Ayrıca, bu tanı olaylarının devam ettiği Tablo Depolama'ya erişim sağlayan Depolama Tablosu Veri Katkıcı rolünü de eklemelisiniz. Bu ekstra izinler olmadan, kayıtlarınızda bu olayları yazılamadığınıza dair uyarılar görebilirsiniz.

    Başka birkaç bağlama biraz daha geniş bir rol kullanmanızı gerektirebilir. Bindings sekmesindeki tablonun Host gerektiren depolama sütununda bu rol gereksinimleri listelenir.

  • APPLICATIONINSIGHTS_AUTHENTICATION_STRING: Monitoring Metrics Publisher rolü, sunucunun Application Insights'a loging için bağlanması için ihtiyaç duyduğu minimum izinleri sağlar.

Not

APPLICATIONINSIGHTS_AUTHENTICATION_STRING Microsoft Entra kimlik doğrulamasını kullanarak Application Insights'a bağlanırken, Application Insights için yerel kimlik doğrulamasını da devre dışı bırakmanız gerekir. Bu yapılandırma, telemetrinin çalışma alanınıza alınması için Microsoft Entra kimlik doğrulaması gerektirir.

Not

Key Vault'u yalnızca şu anda Azure yönetilen kimlikleriyle Microsoft Entra ID'yi desteklemeyen bağlantılar için kullanın.

Bazı hizmetler henüz Microsoft Entra kimlik doğrulamasını desteklemediği için, uygulamanız bazı durumlarda sırlar gerektirebilir. Bu durumlarda, Azure Key Vault, sırlara dayalı kimlik doğrulama için yönetim yaşam döngüsünü kolaylaştırmaya yardımcı olabilir. Uygulamanız, varsayılan depolama hesabı bağlantı dizesi dahil olmak üzere paylaşılan sırları daha güvenli şekilde saklamak ve erişmek için Key Vault'u kullanabilir. Bağlantılar hâlâ paylaşılan sırlar kullansa da, Key Vault sırlarınız için anahtar bakımı ve rotasyonu dahil olmak üzere daha yüksek bir güvenlik seviyesi sağlar. Uygulamanız, hizmetin kendisi henüz yönetilen kimlik tabanlı bağlantıları desteklemese bile, yönetilen kimlikler kullanarak Key Vault'a bağlanabilir.

Key Vault kullandığınızda, bağlantı için uygulama ayarınızı gerçek sır yerine Key Vault referansı kullanarak oluşturun. Daha fazla bilgi için, Key Vault'tan Source uygulama ayarlarına bakınız.

Key Vault'ta bağlantı kurarken şu hususları aklınızda bulundurun:

  • Kasadaki anahtarlara erişmek için, uygulamanızda anahtar kasanıza erişim için bir kimlik vermeniz gerekir.

  • Key Vault'u yönetilen kimlik tabanlı bağlantılarınız için ayarları depolamak için kullanabilirsiniz. Uygulamanız Key Vault kullanıyorsa, referanslar : veya / anahtar ayırıcısını kullanmalıdır; örneğin Storage1:blobServiceUri. Normal uygulama ayar sınırlayıcısını kullandığınızda __, referans isimleri doğru şekilde çözülmez.

AzureWebJobsStorage ayarını, bağlantı dizesinin kendisi yerine bağlantı dizesini içeren bir Key Vault başvurusu döndürecek şekilde yapılandırabilirsiniz. Bunu öğrenmek için App ayarları olarak Key Vault referanslarını kullan bölümüne bakabilirsiniz.

Azure Dosyalar şu anda yönetilen kimlik bağlantılarını desteklemiyor. Bu sınırlama nedeniyle, hem Tüketim hem de Premium planlar için dinamik ölçeklendirme için gerekli olan ayarı güvence altına almak için Key Vault WEBSITE_CONTENTAZUREFILECONNECTIONSTRING kullanın. Flex Consumption planı ayrıca Azure Dosyalar kullanmayan ve yönetilen kimlik bağlantılarını tamamen destekleyen dinamik bir plandır.

Caution

Paylaşılan sırlarla doğrudan çalışmaktan kaçının. Mümkün olduğunda, bağlantılarınız için daha güvenli bir kimlik doğrulama yöntemi kullanın.

Kaybedilen veya tehlikede bulunan sırların potansiyel olumsuz risklerini, Microsoft Entra ID kimlik doğrulama ile yönetilen kimlikler kullanarak azaltın. Uzak hizmet yönetilen kimlikleri desteklemediğinde, en azından paylaşılan sırları daha güvenli şekilde koruyan Azure Key Vault'u kullanın.

Bir sebepten daha güvenli bir kimlik doğrulama yöntemi kullanamazsanız, platform uygulama ayarlarınızda dinlenme halindeyken verileri şifreler. Uygulamalarınızı paylaşılan sırlardan mümkün olan en kısa sürede daha güvenli bir kimlik doğrulama yöntemine taşıyın.

Varsayılan depolama hesabının bağlantı dizesini AzureWebJobsStorage ayarında ayarlayın. Bu ayar, fonksiyon uygulamanızı oluştururken varsayılan bağlantı davranışıdır.

SDK istemci bağlantılarını yönet

Fonksiyon kodunda kendi istemci SDK bağlantılarınızı oluşturduğunuzda, yeni çağrılar oluşturmak yerine her zaman istemci örneklerini tekrar kullanın. Tüm barındırma planlarında en iyi uygulama, gecikmeyi azaltır, soket tükenmesini önler ve kaynak verimliliğini artırır.

İstemci örneklerini yeniden kullanın

Azure İşlevleri uygulamasında servis-özel bir istemci kullanırken şu yönergeleri takip edin:

  • Her işlev çağrısında yeni bir istemci oluşturmayın.
  • Her fonksiyon çağrısının yeniden kullanabileceği tek, paylaşılan bir istemci oluşturun.
  • Farklı fonksiyonlar aynı hizmeti kullanıyorsa, yardımcı sınıfta tek ve paylaşılan bir istemci oluşturmayı düşünün.

Önerilen yaklaşım dilinize bağlıdır:

Singleton veya scoped istemcileri kaydetmek için bağımlılık enjeksiyonunu kullanın.

Her dilde tam kalıplar için İstemci kod örneklerine bakınız.

Tüketim planında bağlantı limitleri

Not

Bu bölümde açıklanan sert bağlantı sınırları yalnızca eski Tüketim planı için geçerlidir. Flex Tüketim planı aynı sandbox ortamında çalışmaz ve bu sınırları koymaz. Ancak, tüm planlarda en iyi performans için müşterilerin yeniden kullanılması hâlâ önerilir.

Eski Tüketim planında, fonksiyon uygulamaları bir kum havuzu ortamında çalışır ve bu ortamda giden bağlantı sayısı her örnek başına 600 aktif (toplamda 1.200) ile sınırlanır. Bu sınıra ulaştığınızda, Fonksiyonlar sunucusu loglara şu mesajı yazar: Host thresholds exceeded: Connections. Daha fazla bilgi için bkz. İşlevler hizmet sınırları.

Bu sınır örnek başınadır. Ölçek denetleyicisi daha fazla isteği işlemek için işlev uygulaması örnekleri eklediğinde, her örneğin bağımsız bir bağlantı sınırı vardır. Bu, küresel bağlantı sınırı olmadığı anlamına gelir ve tüm aktif örneklerde 600'den fazla aktif bağlantı olabilir.

Bağlantı sorunlarını giderirken, işlev uygulamanız için Application Insights'ın etkin olduğundan emin olun. Application Insights, yürütmeler gibi işlev uygulamalarınız için ölçümleri görüntülemenizi sağlar. Daha fazla bilgi için bkz . Application Insights'ta telemetriyi görüntüleme.

İstemci kodu örnekleri

Bu bölümde, işlev kodunuzdan istemci oluşturmaya ve kullanmaya yönelik en iyi yöntemler gösterilmektedir.

HTTP istekleri

Bağımlılık enjeksiyonunu kullanarak paylaşılan bir HttpClient kaydedin; böylece tüm işlev çağrıları aynı örneği yeniden kullanır. Bu durumda, çalışma zamanı yaşam döngüsünü yönettiği için istemciyi serbest bırakmanız gerekmez.

using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]

namespace MyNamespace;

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddHttpClient();
    }
}

Ardından, IHttpClientFactory veya HttpClient öğesini işlev sınıfınıza enjekte edin:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace MyNamespace;

public class MyFunction(HttpClient httpClient, ILogger<MyFunction> logger)
{
    [Function("MyFunction")]
    public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo timer)
    {
        var response = await httpClient.GetAsync("https://example.com");
        logger.LogInformation("Response status: {Status}", response.StatusCode);
    }
}

Azure Cosmos DB clients

Tüm fonksiyonların tek bir bağlantıyı paylaşması için girişiminizde tek bir CosmosClient kaydedin. Azure Cosmos DB dokümantasyonu, uygulamanızın ömrü boyunca tek bir istemci kullanmanızı önerir.

using Microsoft.Azure.Cosmos;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.Extensions.DependencyInjection;

[assembly: FunctionsStartup(typeof(MyNamespace.Startup))]

namespace MyNamespace;

public class Startup : FunctionsStartup
{
    public override void Configure(IFunctionsHostBuilder builder)
    {
        builder.Services.AddSingleton(_ =>
        {
            var connectionString = Environment.GetEnvironmentVariable("CosmosDBConnection");
            return new CosmosClient(connectionString);
        });
    }
}

Ardından, CosmosClient öğesini fonksiyon sınıfınıza ekleyin:

using Microsoft.Azure.Cosmos;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Extensions.Logging;

namespace MyNamespace;

public class MyCosmosFunction(CosmosClient cosmosClient, ILogger<MyCosmosFunction> logger)
{
    private readonly Container _container = cosmosClient.GetContainer("mydb", "mycontainer");

    [Function("MyCosmosFunction")]
    public async Task Run([TimerTrigger("0 */5 * * * *")] TimerInfo timer)
    {
        var item = new { id = "myId", partitionKey = "myPartitionKey", data = "example" };
        await _container.UpsertItemAsync(item, new PartitionKey("myPartitionKey"));
        logger.LogInformation("Item upserted");
    }
}

SqlClient bağlantıları

İşlev kodunuz SQL Server (SqlClient) için .NET Framework Veri Sağlayıcısı kullanarak SQL ilişkisel veritabanına bağlantı oluşturabilir. Bu sağlayıcı aynı zamanda ADO.NET'e dayanan veri çerçeveleri, örneğin Entity Framework'ün temel sağlayıcısıdır. HttpClient ve DocumentClient bağlantılarından farklı olarak, ADO.NET varsayılan olarak bağlantı havuzu uygular. Ancak yine de bağlantınız tükenebileceğinden, veritabanı bağlantılarını iyileştirmeniz gerekir. Daha fazla bilgi için bkz: SQL Server Bağlantı Havuzu (ADO.NET).

İpucu

Entity Framework gibi bazı veri çerçeveleri genellikle yapılandırma dosyasının ConnectionStrings bölümünden bağlantı dizesi alır. Bu durumda, SQL veritabanı bağlantı dizesi'lerini işlev uygulaması ayarlarınızın Bağlantı dizeleri koleksiyonuna ve yerel projenizdeki local.settings.json dosyasına açıkça eklemeniz gerekir. Fonksiyon kodunda bir SqlConnection örneği oluşturuyorsanız, bağlantı dizesi değerini Uygulama ayarlarında diğer bağlantılarınızla birlikte saklayın.

Azure Uygulama Yapılandırması (Azure Uygulama Yapılandırması)

Azure Uygulama Yapılandırması, uygulama ayarlarını merkezi olarak yönetebileceğiniz bir Azure hizmetidir. App Configuration, hiyerarşik anahtar-değer çiftlerini ve sürüm düzenlemeyi destekler ve daha güvenli gizli yönetim için Azure Key Vault ile entegre olur. Daha fazla bilgi için bkz. Azure Uygulama Yapılandırması nedir?

Gelişmiş güvenlik için, fonksiyon uygulamanız Microsoft Entra kimlik doğrulama ile yönetilen kimlikleri kullanarak bir Uygulama Mağazasındaki ayarlara erişir. Daha fazla bilgi için Use App Configuration references for Azure İşlevleri sayfasına bakınız.

Not

Yönetilen kimlik tabanlı bağlantılar için ayarları depolamak üzere Azure Uygulama Yapılandırması kullanılırken, referanslar : biçiminde / veya <CONNECTION_NAME_PREFIX>:fullyQualifiedNamespace anahtar ayırıcısını kullanmalıdır. Normal uygulama ayar sınırlayıcısını kullandığınızda __, referans isimleri doğru şekilde çözülmez.