Azure İşlevleri için Azure Blob depolama bağlamalarına genel bakış

Azure İşlevleri ile tümleşirTetikleyiciler ve bağlamalar aracılığıyla Azure Depolama. Blob depolama ile tümleştirme, blob verilerindeki değişikliklere tepki veren işlevlerin yanı sıra okuma ve yazma değerleri oluşturmanıza olanak tanır.

Eylem Tür
Blob depolama verileri değiştikçe işlev çalıştırma Tetikleyici
İşlevdeki blob depolama verilerini okuma Giriş bağlaması
İşlevin blob depolama verileri yazmasına izin verme Çıkış bağlaması

Uzantıyı yükleme

Yüklediğiniz NuGet uzantısı, işlev uygulamanızda kullandığınız C# moduna bağlıdır:

İşlevler yalıtılmış bir C# çalışan işleminde yürütülür. Daha fazla bilgi edinmek için bkz. Yalıtılmış çalışan işleminde C# Azure İşlevleri çalıştırma kılavuzu.

Uzantının işlevselliği, uzantı sürümüne bağlı olarak değişir:

Bu sürüm gizli dizi yerine kimlik kullanarak bağlanma özelliğini tanıtır. İşlev uygulamalarınızı yönetilen kimliklerle yapılandırma öğreticisi için kimlik tabanlı bağlantılarla işlev uygulaması oluşturma öğreticisine bakın.

Bu sürüm, Azure.Depolama'dan türlere bağlamanıza olanak tanır. Bloblar. Bu yeni türlerin WindowsAzure.StorageMicrosoft.Azure.Storage ile Azure.Depolama'dan nasıl farklı olduğu ve bunlara nasıl geçirebileceğiniz hakkında daha fazla bilgi edinin. Blob geçiş kılavuzu.

Microsoft.Azure.Functions.Worker.Extensions.Depolama yükleyerek uzantıyı projenize ekleyin. Blob NuGet paketi, sürüm 5.x veya üzeri.

.NET CLI'yi kullanma:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs

Not

Azure Blobları, Azure Kuyrukları ve Azure Tabloları artık ayrı uzantılar kullanır ve tek tek başvurulur. Örneğin, .NET yalıtılmış işlem uygulamanızdaki üç hizmetin de tetikleyicilerini ve bağlamalarını kullanmak için projenize aşağıdaki paketleri eklemeniz gerekir:

Daha önce uzantılar Birlikte Microsoft.Azure.Functions.Worker.Extensions.Depolama, sürüm 4.x olarak gönderilmektedir. Aynı paket, yalnızca bloblar ve kuyruklar için bölünmüş paketlere başvuran 5.x sürümüne de sahiptir. Bu nedenle, paket başvurularınızı eski sürümlerden yükseltirken yeni Microsoft.Azure.Functions.Worker.Extensions.Tables NuGet paketine de başvurmanız gerekebilir. Ayrıca, bu yeni bölünmüş paketlere başvururken, aynı bağlamaların iki tanımından çakışmalara neden olacağı için birleşik depolama paketinin eski bir sürümüne başvurmadığınızdan emin olun.

Uygulamanızı F# kullanarak yazıyorsanız, bu uzantıyı uygulamanın başlangıç yapılandırmasının bir parçası olarak da yapılandırmanız gerekir. veya ConfigureFunctionsWebApplication()çağrısındaConfigureFunctionsWorkerDefaults(), parametre alan bir IFunctionsWorkerApplication temsilci ekleyin. Ardından bu temsilcinin gövdesinde nesnesine çağrı ConfigureBlobStorageExtension() yapın:

let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
    appBuilder.ConfigureBlobStorageExtension() |> ignore
) |> ignore

Paket yükleme

Blob depolama bağlaması, host.json proje dosyanızda belirtilen bir uzantı paketinin parçasıdır. Bağlamanın sürümünü değiştirmek için veya paketler henüz yüklü değilse bu paketi değiştirmeniz gerekebilir. Daha fazla bilgi edinmek için bkz . uzantı paketi.

Bu sürüm gizli dizi yerine kimlik kullanarak bağlanma özelliğini tanıtır. İşlev uygulamalarınızı yönetilen kimliklerle yapılandırma öğreticisi için kimlik tabanlı bağlantılarla işlev uygulaması oluşturma öğreticisine bakın.

Uzantı paketi v3'ten, dosyanıza host.json aşağıdaki kodu ekleyerek veya değiştirerek uzantının bu sürümünü ekleyebilirsiniz:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.3.0, 4.0.0)"
    }
}

Daha fazla bilgi edinmek için bkz . Uzantılarınızı güncelleştirme.

Bağlama türleri

.NET için desteklenen bağlama türleri, aşağıdakilerden biri olabilecek uzantı sürümüne ve C# yürütme moduna bağlıdır:

Yalıtılmış çalışan işlem sınıfı kitaplığı derlenmiş C# işlevi çalışma zamanından yalıtılmış bir işlemde çalışır.

Modun ve sürümün bağlama türü ayrıntılarını görmek için bir sürüm seçin.

Yalıtılmış çalışan işlemi, aşağıdaki tablolara göre parametre türlerini destekler.

Blob tetikleyicisi

Blob tetikleyicisi aşağıdaki türlere bağlanabilir:

Type Açıklama
string Dize olarak blob içeriği. Blob içeriği basit metin olduğunda kullanın.
byte[] Blob içeriğinin baytları.
JSON serileştirilebilir türler Bir blob JSON verileri içerdiğinde İşlevler, JSON verilerini seri durumdan çıkararak düz eski bir CLR nesnesi (POCO) türüne dönüştürmeye çalışır.
Akış1 Blob içeriğinin giriş akışı.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Bloba bağlı bir istemci. Bu tür kümesi blobu işlemek için en fazla denetimi sunar ve bağlantı yeterli izne sahipse bloba geri yazmak için kullanılabilir.

1 Bu türleri kullanmak için Microsoft.Azure.Functions.Worker.Extensions.Depolama'e başvurmanız gerekir. Bloblar 6.0.0 veya üzeri ve SDK türü bağlamaları için ortak bağımlılıklar.

Blob giriş bağlaması

İşlevin tek bir blobu işlemesini istediğinizde, blob giriş bağlaması aşağıdaki türlere bağlanabilir:

Type Açıklama
string Dize olarak blob içeriği. Blob içeriği basit metin olduğunda kullanın.
byte[] Blob içeriğinin baytları.
JSON serileştirilebilir türler Bir blob JSON verileri içerdiğinde İşlevler, JSON verilerini seri durumdan çıkararak düz eski bir CLR nesnesi (POCO) türüne dönüştürmeye çalışır.
Akış1 Blob içeriğinin giriş akışı.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
AppendBlobClient1,
BlobBaseClient1
Bloba bağlı bir istemci. Bu tür kümesi blobu işlemek için en fazla denetimi sunar ve bağlantı yeterli izne sahipse bloba geri yazmak için kullanılabilir.

İşlevin bir kapsayıcıdan birden çok blobu işlemesini istediğinizde, blob giriş bağlaması aşağıdaki türlere bağlanabilir:

Type Açıklama
T[] veya List<T> burada T tek blob giriş bağlama türlerinden biridir Birden çok blobun dizisi veya listesi. Her girdi kapsayıcıdan bir blobu temsil eder. Ayrıca, gibi bu türler IEnumerable<T>tarafından uygulanan arabirimlere de bağlanabilirsiniz.
BlobContainerClient1 Kapsayıcıya bağlı bir istemci. Bu tür, kapsayıcıyı işlemek için en fazla denetimi sunar ve bağlantı yeterli izne sahipse kapsayıcıya yazmak için kullanılabilir.

1 Bu türleri kullanmak için Microsoft.Azure.Functions.Worker.Extensions.Depolama'e başvurmanız gerekir. Bloblar 6.0.0 veya üzeri ve SDK türü bağlamaları için ortak bağımlılıklar.

Blob çıkış bağlaması

İşlevin tek bir bloba yazmasını istediğinizde, blob çıkış bağlaması aşağıdaki türlere bağlanabilir:

Type Açıklama
string Dize olarak blob içeriği. Blob içeriği basit metin olduğunda kullanın.
byte[] Blob içeriğinin baytları.
JSON serileştirilebilir türler JSON blobunun içeriğini temsil eden nesne. İşlevler, düz eski bir CLR nesnesi (POCO) türünü JSON verilerine seri hale getirme girişiminde bulunur.

İşlevin birden çok bloba yazmasını istediğinizde, blob çıkış bağlaması aşağıdaki türlere bağlanabilir:

Type Açıklama
T[] burada T tek blob çıkış bağlama türlerinden biridir Birden çok blob için içerik içeren bir dizi. Her girdi bir blobun içeriğini temsil eder.

Diğer çıkış senaryoları için Azure.Depolama'dan türler oluşturun ve kullanın. Bloblar doğrudan.

host.json ayarları

Bu bölümde, bu bağlamayı kullanan işlevler için kullanılabilen işlev uygulaması yapılandırma ayarları açıklanmaktadır. Bu ayarlar yalnızca uzantı sürümü 5.0.0 ve üzeri kullanılırken geçerlidir. Aşağıdaki örnek host.json dosyası, bu bağlama için yalnızca sürüm 2.x+ ayarlarını içerir. 2.x ve sonraki sürümlerdeki işlev uygulaması yapılandırma ayarları hakkında daha fazla bilgi için bkz. Azure İşlevleri için host.json başvuru.

Not

Bu bölüm, 5.0.0'ın önceki uzantı sürümleri için geçerli değildir. Bu önceki sürümlerde bloblar için işlev uygulaması genelinde yapılandırma ayarı yoktur.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Özellik Varsayılan Açıklama
maxDegreeOfParallelism 8 * (kullanılabilir çekirdek sayısı) Belirli bir işlev uygulamasındaki tüm blob ile tetiklenen işlevler için izin verilen eşzamanlı çağrıların tamsayısı. İzin verilen en düşük değer 1'dir.
poisonBlobThreshold 5 İletiyi zehirli kuyruğa taşımadan önce işlemeyi denemenin tamsayı sayısı. İzin verilen en düşük değer 1'dir.

Sonraki adımlar