Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Kumpulan artikel ini menjelaskan cara bekerja dengan pengikatan Azure Cosmos DB di Azure Functions. Azure Functions mendukung pengikatan pemicu, input, dan output untuk Azure Cosmos DB.
| Perbuatan | Jenis |
|---|---|
| Menjalankan fungsi saat dokumen Azure Cosmos DB dibuat atau dimodifikasi | Pemicu |
| Membaca dokumen Azure Cosmos DB | Pengikatan masukan |
| Menyimpan perubahan ke dokumen Azure Cosmos DB | Pengikatan output |
Penting
Versi ekstensi pengikatan Azure Cosmos DB ini mendukung Azure Functions versi 4.x. Jika aplikasi Anda masih menggunakan runtime Functions versi 1.x, lihat Pengikatan Azure Cosmos DB untuk Azure Functions 1.x.
Dalam runtime Functions v1.x, pengikatan ini awalnya bernama DocumentDB.
API yang didukung
Tabel ini menunjukkan cara menyambungkan ke berbagai API Azure Cosmos DB dari kode fungsi Anda:
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.
Proses untuk menginstal ekstensi bervariasi tergantung pada versi ekstensi:
Versi ekstensi pengikatan Azure Cosmos DB ini memperkenalkan kemampuan untuk terhubung menggunakan identitas alih-alih rahasia. Untuk tutorial cara mengonfigurasi aplikasi fungsi Anda dengan identitas terkelola, lihat tutorial membuat aplikasi fungsi dengan koneksi berbasis identitas.
Tambahkan ekstensi ke proyek Anda dengan menginstal paket NuGet, versi 4.x.
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 ConfigureCosmosDBExtension() pada objek:
let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
appBuilder.ConfigureCosmosDBExtension() |> ignore
) |> ignore
Memasang bundel
Agar dapat menggunakan ekstensi pengikatan ini di aplikasi Anda, pastikan file host.json di akar proyek Anda berisi referensi ini extensionBundle :
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Dalam contoh ini, version nilai [4.0.0, 5.0.0) menginstruksikan host Functions untuk menggunakan versi bundel yang setidaknya 4.0.0 tetapi kurang dari 5.0.0, yang mencakup semua versi potensial 4.x. Notasi ini secara efektif mempertahankan aplikasi Anda pada versi minor terbaru yang tersedia dari bundel ekstensi v4.x.
Jika memungkinkan, Anda harus menggunakan versi utama bundel ekstensi terbaru dan memungkinkan runtime untuk secara otomatis mempertahankan versi minor terbaru. Anda dapat melihat konten bundel terbaru pada halaman rilis bundel ekstensi. Untuk informasi selengkapnya, lihat Bundel ekstensi Azure Functions.
Karena perubahan skema di Azure Cosmos DB SDK, versi 4.x dari ekstensi Azure Cosmos DB memerlukan azure-functions-java-library V3.0.0 untuk fungsi Java.
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. Dukungan untuk pengikatan ke jenis dari Microsoft.Azure.Cosmossedang dalam pratinjau.
Pemicu Cosmos DB
Saat Anda ingin fungsi memproses satu dokumen, pemicu Cosmos DB dapat mengikat ke jenis berikut:
| Jenis | Deskripsi |
|---|---|
| Jenis yang bisa diserialisasikan JSON | Functions mencoba mendeserialisasi data JSON dokumen dari umpan perubahan Cosmos DB menjadi jenis objek CLR (POCO) yang sudah lama. |
Saat Anda ingin fungsi memproses batch dokumen, pemicu Cosmos DB dapat mengikat ke jenis berikut:
| Jenis | Deskripsi |
|---|---|
IEnumerable<T>di mana T adalah jenis JSON yang dapat diserialisasikan |
Enumerasi entitas yang termasuk dalam batch. Setiap entri mewakili satu dokumen dari umpan perubahan Cosmos DB. |
Pengikatan input Cosmos DB
Saat Anda ingin fungsi memproses satu dokumen, pengikatan input Cosmos DB dapat mengikat ke jenis berikut:
| Jenis | Deskripsi |
|---|---|
| Jenis yang bisa diserialisasikan JSON | Fungsi mencoba mendeserialisasi data JSON dokumen ke dalam jenis objek CLR (POCO) yang sudah lama biasa. |
Saat Anda ingin fungsi memproses beberapa dokumen dari kueri, pengikatan input Cosmos DB dapat mengikat ke jenis berikut:
| Jenis | Deskripsi |
|---|---|
IEnumerable<T>di mana T adalah jenis JSON yang dapat diserialisasikan |
Enumerasi entitas yang dikembalikan oleh kueri. Setiap entri mewakili satu dokumen. |
| CosmosClient1 | Klien yang terhubung ke akun Cosmos DB. |
| Database1 | Klien yang terhubung ke database Cosmos DB. |
| Kontainer1 | Klien yang terhubung ke kontainer Cosmos DB. |
1 Untuk menggunakan jenis ini, Anda perlu mereferensikan Microsoft.Azure.Functions.Worker.Extensions.CosmosDB 4.4.0 atau yang lebih baru dan dependensi umum untuk pengikatan jenis SDK.
Pengikatan output Cosmos DB
Saat Anda ingin fungsi menulis ke satu dokumen, pengikatan output Cosmos DB dapat mengikat ke jenis berikut:
| Jenis | Deskripsi |
|---|---|
| Jenis yang bisa diserialisasikan JSON | Objek yang mewakili konten JSON dokumen. Fungsi mencoba menserialisasikan jenis objek CLR (POCO) lama biasa ke dalam data JSON. |
Saat Anda ingin fungsi menulis ke beberapa dokumen, pengikatan output Cosmos DB dapat mengikat ke jenis berikut:
| Jenis | Deskripsi |
|---|---|
T[] di mana T adalah jenis JSON yang dapat diserialisasikan |
Array yang berisi beberapa dokumen. Setiap entri mewakili satu dokumen. |
Untuk skenario output lainnya, buat dan gunakan CosmosClient dengan jenis lain dari Microsoft.Azure.Cosmos secara langsung. Lihat Mendaftarkan klien Azure untuk contoh penggunaan injeksi dependensi untuk membuat jenis klien dari Azure SDK.
Jenis Pengikatan SDK
Dukungan Jenis SDK untuk Azure Cosmos ada di Pratinjau. Ikuti Pengikatan SDK Python untuk Sampel CosmosDB untuk mulai menggunakan Jenis SDK untuk Cosmos di Python.
Penting
Menggunakan pengikatan jenis SDK memerlukan model pemrograman Python v2.
| Pengikatan | Jenis parameter | Contoh-contoh |
|---|---|---|
| Input CosmosDB |
ContainerProxy, CosmosClient, DatabaseProxy |
ContainerProxy,CosmosClient,DatabaseProxy |
Kode pengecualian dan pengembalian
| Pengikatan | Referensi |
|---|---|
| Azure Cosmos DB | Daftar Kode Status HTTP untuk Azure Cosmos DB |
Pengaturan host.json
Bagian ini menjelaskan pengaturan konfigurasi yang tersedia untuk pengikatan ini di versi 2.x dan yang lebih baru. Pengaturan dalam file host.json berlaku untuk semua fungsi dalam instans aplikasi fungsi. Untuk informasi selengkapnya tentang pengaturan konfigurasi aplikasi fungsi, lihat referensihost.json untuk Azure Functions.
{
"version": "2.0",
"extensions": {
"cosmosDB": {
"connectionMode": "Gateway",
"userAgentSuffix": "MyDesiredUserAgentStamp"
}
}
}
| Properti | Bawaan | Deskripsi |
|---|---|---|
| connectionMode | Gateway |
Mode koneksi yang digunakan oleh fungsi saat menyambungkan ke layanan Azure Cosmos DB. Opsi: Direct terhubung langsung ke replika backend melalui TCP dan dapat memberikan latensi yang lebih rendah, dan Gateway merutekan permintaan melalui gateway ujung depan melalui HTTPS. Untuk informasi selengkapnya, lihat Mode koneksi Azure Cosmos DB SDK. |
| userAgentSuffix | N/a | Menambahkan nilai string yang ditentukan ke semua permintaan yang dibuat oleh pemicu atau pengikatan ke layanan. Ini memudahkan Anda melacak aktivitas di Azure Monitor, berdasarkan aplikasi fungsi tertentu dan pemfilteran berdasarkan User Agent. |