Pengikatan penyimpanan Azure Blob untuk pratinjau Azure Functions

Azure Functions terintegrasi dengan Azure Storage melalui pemicu dan pengikatan. Mengintegrasikan dengan penyimpanan Blob memungkinkan Anda untuk membangun fungsi yang bereaksi terhadap perubahan data gumpalan serta membaca dan menulis nilai.

Perbuatan Jenis
Jalankan fungsi saat data penyimpanan gumpalan berubah Pemicu
Baca data penyimpanan gumpalan dalam suatu fungsi Pengikatan masukan
Izinkan fungsi untuk menulis data penyimpanan gumpalan Pengikatan output

Menginstal ekstensi

Paket NuGet ekstensi yang Anda instal bergantung pada mode C# yang Anda gunakan di aplikasi fungsi Anda:

Functions dijalankan dalam proses pekerja C# yang terisolasi. Untuk mempelajari selengkapnya, lihat Panduan untuk menjalankan C# Azure Functions dalam proses pekerja yang terisolasi.

Fungsionalitas ekstensi tersebut bervariasi tergantung pada versi ekstensi:

Versi ini memperkenalkan kemampuan untuk menyambungkan menggunakan identitas alih-alih rahasia. Untuk tutorial cara mengonfigurasi aplikasi fungsi Anda dengan identitas terkelola, lihat tutorial membuat aplikasi fungsi dengan koneksi berbasis identitas.

Versi ini memungkinkan Anda untuk mengikat jenis dari Azure.Storage.Blobs. Pelajari lebih lanjut tentang perbedaan jenis baru ini dari WindowsAzure.Storage dan Microsoft.Azure.Storage serta cara bermigrasi ke jenis baru ini dari Panduan Migrasi Azure.Storage.Blobs.

Tambahkan ekstensi ke proyek Anda dengan menginstal paket NuGet Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs, versi 5.x atau yang lebih baru.

Menggunakan CLI .NET:

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

Catatan

Azure Blobs, Azure Queues, dan Azure Tables sekarang menggunakan ekstensi terpisah dan direferensikan satu per satu. Misalnya, untuk menggunakan pemicu dan pengikatan untuk ketiga layanan di aplikasi proses terisolasi .NET, Anda harus menambahkan paket berikut ke proyek Anda:

Sebelumnya, ekstensi dikirim bersama-sama sebagai Microsoft.Azure.Functions.Worker.Extensions.Storage, versi 4.x. Paket yang sama ini juga memiliki versi 5.x, yang merujuk pada paket terpisah untuk blob dan antrean saja. Saat memutakhirkan referensi paket dari versi yang lebih lama, Anda mungkin perlu juga mereferensikan paket NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables baru. Juga, saat mereferensikan paket terpisah yang lebih baru ini, pastikan Anda tidak merujuk versi yang lebih lama dari paket penyimpanan gabungan, karena ini akan mengakibatkan konflik dari dua definisi dari ikatan yang sama.

Jika Anda menulis aplikasi menggunakan F#, Anda juga harus mengonfigurasi ekstensi ini sebagai bagian dari konfigurasi startup aplikasi. Dalam panggilan ke ConfigureFunctionsWorkerDefaults() atau ConfigureFunctionsWebApplication(), tambahkan delegasi yang mengambil IFunctionsWorkerApplication parameter. Kemudian dalam isi delegasi tersebut, panggil ConfigureBlobStorageExtension() pada objek:

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

Memasang bundel

Pengikatan penyimpanan Blob adalah bagian dari bundel ekstensi, yang ditentukan dalam file proyek host.json. Anda mungkin perlu mengubah bundel ini untuk mengubah versi pengikatan, atau jika bundel belum terinstal. Untuk mempelajari lebih lanjut, lihat bundel ekstensi.

Versi ini memperkenalkan kemampuan untuk menyambungkan menggunakan identitas alih-alih rahasia. Untuk tutorial cara mengonfigurasi aplikasi fungsi Anda dengan identitas terkelola, lihat tutorial membuat aplikasi fungsi dengan koneksi berbasis identitas.

Anda dapat menambahkan versi ekstensi ini dari bundel ekstensi v3 dengan menambahkan atau mengganti kode berikut dalam file host.json:

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

Untuk mempelajari selengkapnya, lihat Perbarui ekstensi Anda.

Jenis pengikatan

Jenis pengikatan yang didukung untuk .NET bergantung pada versi ekstensi dan mode eksekusi C#, yang dapat menjadi salah satu hal berikut:

Pustaka kelas proses pekerja terisolasi yang dikompilasi fungsi C# berjalan dalam proses yang diisolasi dari runtime.

Pilih versi untuk melihat detail jenis pengikatan untuk mode dan versi.

Proses pekerja yang terisolasi mendukung jenis parameter sesuai dengan tabel di bawah ini.

Pemicu blob

Pemicu blob dapat mengikat ke jenis berikut:

Tipe Deskripsi
string Konten blob sebagai string. Gunakan saat konten blob adalah teks sederhana.
byte[] Byte konten blob.
Jenis yang bisa diserialisasikan JSON Saat blob berisi data JSON, Functions mencoba mendeserialisasi data JSON ke dalam jenis objek CLR (POCO) yang berusia biasa.
Aliran1 Aliran input konten blob.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
TambahkanBlobClient1,
BlobBaseClient1
Klien yang terhubung ke blob. Set jenis ini menawarkan kontrol paling besar untuk memproses blob dan dapat digunakan untuk menulis kembali ke blob jika koneksi memiliki izin yang memadai.

1 Untuk menggunakan jenis ini, Anda perlu mereferensikan Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 atau yang lebih baru dan dependensi umum untuk pengikatan jenis SDK.

Pengikatan input blob

Saat Anda ingin fungsi memproses satu blob, pengikatan input blob dapat mengikat ke jenis berikut:

Tipe Deskripsi
string Konten blob sebagai string. Gunakan saat konten blob adalah teks sederhana.
byte[] Byte konten blob.
Jenis yang bisa diserialisasikan JSON Saat blob berisi data JSON, Functions mencoba mendeserialisasi data JSON ke dalam jenis objek CLR (POCO) yang berusia biasa.
Aliran1 Aliran input konten blob.
BlobClient1,
BlockBlobClient1,
PageBlobClient1,
TambahkanBlobClient1,
BlobBaseClient1
Klien yang terhubung ke blob. Set jenis ini menawarkan kontrol paling besar untuk memproses blob dan dapat digunakan untuk menulis kembali jika koneksi memiliki izin yang memadai.

Saat Anda ingin fungsi memproses beberapa blob dari kontainer, pengikatan input blob dapat mengikat ke jenis berikut:

Tipe Deskripsi
T[] atau List<T> di mana T adalah salah satu jenis pengikatan input blob tunggal Array atau daftar beberapa blob. Setiap entri mewakili satu blob dari kontainer. Anda juga dapat mengikat antarmuka apa pun yang diterapkan oleh jenis ini, seperti IEnumerable<T>.
BlobContainerClient1 Klien yang terhubung ke kontainer. Jenis ini menawarkan kontrol paling besar untuk memproses kontainer dan dapat digunakan untuk menulis ke kontainer jika koneksi memiliki izin yang memadai.

1 Untuk menggunakan jenis ini, Anda perlu mereferensikan Microsoft.Azure.Functions.Worker.Extensions.Storage.Blobs 6.0.0 atau yang lebih baru dan dependensi umum untuk pengikatan jenis SDK.

Pengikatan output blob

Saat Anda ingin fungsi menulis ke satu blob, pengikatan output blob dapat mengikat ke jenis berikut:

Tipe Deskripsi
string Konten blob sebagai string. Gunakan saat konten blob adalah teks sederhana.
byte[] Byte konten blob.
Jenis yang bisa diserialisasikan JSON Objek yang mewakili konten blob JSON. Fungsi mencoba menserialisasikan jenis objek CLR (POCO) lama biasa ke dalam data JSON.

Saat Anda ingin fungsi menulis ke beberapa blob, pengikatan output blob dapat mengikat ke jenis berikut:

Tipe Deskripsi
T[] di mana T adalah salah satu jenis pengikatan output blob tunggal Array yang berisi konten untuk beberapa blob. Setiap entri mewakili konten satu blob.

Untuk skenario output lainnya, buat dan gunakan jenis dari Azure.Storage.Blobs secara langsung.

Pengaturan host.json

Bagian ini menjelaskan pengaturan konfigurasi aplikasi fungsi yang tersedia untuk fungsi yang diikatnya. Pengaturan ini hanya berlaku saat menggunakan ekstensi versi 5.0.0 dan lebih tinggi. Contohnya file host.json di bawah ini hanya berisi pengaturan versi 2.x+ untuk pengikatan ini. Untuk informasi selengkapnya tentang pengaturan konfigurasi aplikasi fungsi dalam versi 2.x dan seterusnya, lihat referensi host.json untuk Azure Functions.

Catatan

Bagian ini tidak berlaku untuk versi ekstensi sebelum 5.0.0. Untuk versi yang lebih lama, tidak ada pengaturan konfigurasi seluruh aplikasi fungsi untuk blob.

{
    "version": "2.0",
    "extensions": {
        "blobs": {
            "maxDegreeOfParallelism": 4,
            "poisonBlobThreshold": 1
        }
    }
}
Properti Default Deskripsi
maxDegreeOfParallelism 8 * (jumlah inti yang tersedia) Jumlah bilangan bulat pemanggilan bersamaan yang diizinkan untuk semua fungsi yang dipicu blob dalam aplikasi fungsi tertentu. Nilai minimum yang diizinkan adalah 1.
poisonBlobThreshold 5 Bilangan bulat berkali-kali untuk mencoba memproses pesan sebelum memindahkannya ke antrean racun. Nilai minimum yang diizinkan adalah 1.

Langkah berikutnya