Pemicu Azure Cosmos DB untuk Azure Functions 2.x dan yang lebih tinggi

Pemicu Azure Cosmos DB menggunakan umpan perubahan Azure Cosmos DB untuk mendengarkan penyisipan dan pembaruan di seluruh partisi. Umpan perubahan menerbitkan item baru dan yang diperbarui, tidak termasuk pembaruan dari penghapusan.

Untuk informasi tentang pengaturan dan detail konfigurasi, lihat gambaran umum.

Keputusan penskalaan Cosmos DB untuk paket Konsumsi dan Premium dilakukan melalui penskalaan berbasis target. Untuk informasi selengkapnya, lihat Penskalaan berbasis target.

Penting

Artikel ini menggunakan tab untuk mendukung beberapa versi model pemrograman Node.js. Model v4 umumnya tersedia dan dirancang untuk memiliki pengalaman yang lebih fleksibel dan intuitif untuk pengembang JavaScript dan TypeScript. Untuk detail selengkapnya tentang cara kerja model v4, lihat panduan pengembang Node.js Azure Functions. Untuk mempelajari selengkapnya tentang perbedaan antara v3 dan v4, lihat panduan migrasi.

Azure Functions mendukung dua model pemrograman untuk Python. Cara Anda menentukan pengikatan tergantung pada model pemrograman yang Anda pilih.

Model pemrograman Python v2 memungkinkan Anda menentukan pengikatan menggunakan dekorator langsung dalam kode fungsi Python Anda. Untuk informasi selengkapnya, lihat panduan pengembang Python.

Artikel ini mendukung kedua model pemrograman.

Contoh

Penggunaan pemicu Blob tergantung pada versi paket ekstensi serta modalitas C# yang digunakan di aplikasi fungsi Anda, yang merupakan salah satu dari hal berikut ini:

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

Contoh berikut ini bergantung pada versi ekstensi untuk model C# yang diberikan.

Contoh ini mengacu pada jenis ToDoItem sederhana:

public class ToDoItem
{
    public string? Id { get; set; }
    public string? Description { get; set; }
}

Fungsi berikut dipanggil ketika ada penyisipan atau pembaruan dalam database dan koleksi yang ditentukan.

[Function("CosmosTrigger")]
public void Run([CosmosDBTrigger(
    databaseName: "ToDoItems",
    containerName:"TriggerItems",
    Connection = "CosmosDBConnection",
    LeaseContainerName = "leases",
    CreateLeaseContainerIfNotExists = true)] IReadOnlyList<ToDoItem> todoItems,
    FunctionContext context)
{
    if (todoItems is not null && todoItems.Any())
    {
        foreach (var doc in todoItems)
        {
            _logger.LogInformation("ToDoItem: {desc}", doc.Description);
        }
    }
}

Fungsi ini dipanggil ketika ada sisipan atau pembaruan dalam database dan kontainer yang ditentukan.

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.

    @FunctionName("CosmosDBTriggerFunction")
    public void run(
        @CosmosDBTrigger(
            name = "items",
            databaseName = "ToDoList",
            containerName = "Items",
            leaseContainerName="leases",
            connection = "AzureCosmosDBConnection",
            createLeaseContainerIfNotExists = true
        )
        Object inputItem,
        final ExecutionContext context
    ) {
        context.getLogger().info("Items modified: " + inputItems.size());
    }

Di pustaka runtime fungsi Java, gunakan @CosmosDBTrigger anotasi pada parameter yang nilainya akan berasal dari Azure Cosmos DB. Anotasi ini dapat digunakan dengan jenis Java asli, POJO, atau nilai yang dapat diubah ke null menggunakan Optional<T>.

Contoh berikut menunjukkan fungsi TypeScript pemicu Azure Cosmos DB. Fungsi ini menulis pesan log saat rekaman Azure Cosmos DB ditambahkan atau dimodifikasi.

import { app, InvocationContext } from '@azure/functions';

export async function cosmosDBTrigger1(documents: unknown[], context: InvocationContext): Promise<void> {
    context.log(`Cosmos DB function processed ${documents.length} documents`);
}

app.cosmosDB('cosmosDBTrigger1', {
    connection: '<connection-app-setting>',
    databaseName: 'Tasks',
    containerName: 'Items',
    createLeaseContainerIfNotExists: true,
    handler: cosmosDBTrigger1,
});

Contoh berikut menunjukkan fungsi JavaScript pemicu Azure Cosmos DB. Fungsi ini menulis pesan log saat rekaman Azure Cosmos DB ditambahkan atau dimodifikasi.

const { app } = require('@azure/functions');

app.cosmosDB('cosmosDBTrigger1', {
    connection: '<connection-app-setting>',
    databaseName: 'Tasks',
    containerName: 'Items',
    createLeaseContainerIfNotExists: true,
    handler: (documents, context) => {
        context.log(`Cosmos DB function processed ${documents.length} documents`);
    },
});

Contoh berikut menunjukkan cara menjalankan fungsi saat data berubah di Azure Cosmos DB.

{
    "type": "cosmosDBTrigger",
    "name": "documents",
    "direction": "in",
    "leaseCollectionName": "leases",
    "connectionStringSetting": "<connection-app-setting>",
    "databaseName": "Tasks",
    "collectionName": "Items",
    "createLeaseCollectionIfNotExists": true
}

Perhatikan bahwa beberapa nama atribut pengikatan berubah di dalam versi 4.x dari ekstensi Azure Cosmos DB.

Dalam file run.ps1, Anda memiliki akses ke dokumen yang memicu fungsi melalui parameter $Documents.

param($Documents, $TriggerMetadata) 

Write-Host "First document Id modified : $($Documents[0].id)" 

Contoh berikut menunjukkan pengikatan pemicu Azure Cosmos DB. Contohnya tergantung pada apakah Anda menggunakan model pemrograman Python v1 atau v2.

import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="CosmosDBTrigger")
@app.cosmos_db_trigger(name="documents", 
                       connection="CONNECTION_SETTING",
                       database_name="DB_NAME", 
                       container_name="CONTAINER_NAME", 
                       lease_container_name="leases",
                       create_lease_container_if_not_exists="true")
def test_function(documents: func.DocumentList) -> str:
    if documents:
        logging.info('Document id: %s', documents[0]['id'])

Atribut

Pustaka C# yang berada di dalam proses maupun proses terisolasi menggunakan CosmosDBTriggerAttribute guna menentukan fungsi. Skrip C# sebagai gantinya menggunakan file konfigurasi function.json seperti yang dijelaskan dalam panduan pembuatan skrip C#.

Properti atribut Deskripsi
Koneksi Nama pengaturan aplikasi atau koleksi aplikasi yang menentukan cara terhubung ke akun Azure Cosmos DB yang sedang dipantau. Untuk informasi selengkapnya, lihat Sambungan.
DatabaseName Nama database Azure Cosmos DB dengan koleksi sedang dalam pemantauan.
ContainerName Nama kontainer yang sedang dipantau.
LeaseConnection (Opsional) Nama pengaturan aplikasi atau kumpulan pengaturan yang menentukan cara menyambungkan ke akun Azure Cosmos DB yang menyimpan kontainer sewa.

Saat tidak diatur, nilai Connection akan digunakan. Parameter ini secara otomatis diatur saat pengikatan dibuat di portal. String koneksi untuk kontainer sewa harus memiliki izin tulis.
LeaseDatabaseName (Opsional) Nama database yang menyimpan kontainer digunakan untuk menyimpan sewa. Saat tidak diatur, nilai databaseName pengaturan digunakan.
LeaseContainerName (Opsional) Nama kontainer yang digunakan untuk menyimpan sewa. Saat tidak diatur, nilai leases akan digunakan.
CreateLeaseContainerIfNotExists (Opsional) Saat diatur ke true, kontainer sewa secara otomatis dibuat jika belum tersedia. Nilai defaultnya adalah false. Saat menggunakan identitas Microsoft Entra jika Anda mengatur nilai ke true, membuat kontainer bukanlah operasi yang diizinkan dan Fungsi Anda tidak akan dapat dimulai.
LeasesContainerThroughput (Opsional) Menentukan jumlah Unit Permintaan yang akan ditetapkan ketika kontainer sewa dibuat. Pengaturan ini hanya digunakan saat CreateLeaseContainerIfNotExists diatur ke true. Parameter ini secara otomatis diatur saat pengikatan dibuat menggunakan portal.
LeaseContainerPrefix (Opsional) Saat diatur, nilai akan ditambahkan sebagai prefiks untuk sewa yang dibuat dalam kontainer Sewa bagi fungsi ini. Menggunakan prefiks akan memungkinkan dua Azure Functions yang terpisah berbagi kontainer Sewa yang sama dengan menggunakan prefiks yang berbeda.
FeedPollDelay (Opsional) Waktu (dalam milidetik) untuk penundaan antara poling partisi untuk perubahan baru pada umpan, setelah semua perubahan terkini dikosongkan. Defaultnya adalah 5.000 milidetik, atau 5 detik.
LeaseAcquireInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval memulai tugas yang akan dikomputasi jika partisi didistribusikan secara merata di antara instans host yang dikenal. Defaultnya adalah 13000 (13 detik).
LeaseExpirationInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval saat sewa diambil dari sewa yang mewakili partisi. Jika sewa tidak diperpanjang dalam interval ini, maka akan menyebabkan kedaluwarsa dan kepemilikan partisi akan pindah ke instans lain. Defaultnya adalah 60000 (60 detik).
LeaseRenewInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval perpanjangan semua sewa untuk partisi yang saat ini dipegang oleh instans. Defaultnya adalah 17000 (17 detik).
MaxItemsPerInvocation (Opsional) Saat diatur, properti ini menetapkan jumlah maksimum item yang diterima per panggilan Fungsi. Jika operasi di dalam koleksi terpantau dilakukan melalui prosedur yang disimpan, cakupan transaksi akan dipertahankan saat membaca item dari umpan perubahan. Akibatnya, jumlah item yang diterima bisa lebih tinggi dari nilai yang ditentukan sehingga item yang diubah oleh transaksi yang sama ditampilkan sebagai bagian dari satu batch atomik.
StartFromBeginning (Opsional) Opsi ini memberi tahu Pemicu untuk membaca perubahan dari awal riwayat perubahan koleksi, dan bukan dimulai pada waktu terkini. Membaca dari awal hanya berfungsi saat pemicu dimulai, karena dalam proses berikutnya, titik pemeriksaan sudah disimpan. Mengatur opsi ini ke true saat ada sewa yang sudah dibuat tidak berpengaruh.
StartFromTime (Opsional) Mendapatkan atau mengatur tanggal dan waktu untuk menginisialisasi operasi baca bagi umpan perubahan. Format yang disarankan adalah ISO 8601, dengan pendesain UTC seperti 2021-02-16T14:19:29Z. Format ini hanya digunakan untuk mengatur status pemicu awal. Setelah pemicu memiliki status sewa, pengubahan nilai ini tidak akan berpengaruh.
PreferredLocations (Opsional) Menentukan lokasi (wilayah) pilihan untuk akun database yang direplikasi geografis di layanan Azure Cosmos DB. Nilai harus dipisahkan koma. Misalnya, "AS Timur, AS Tengah Selatan, Eropa Utara".

Dekorator

Hanya berlaku untuk model pemrograman Python v2.

Untuk fungsi Python v2 yang ditentukan menggunakan dekorator, properti berikut pada cosmos_db_trigger:

Properti Deskripsi
arg_name Nama variabel yang digunakan dalam kode fungsi yang mewakili daftar dokumen dengan perubahan.
database_name Nama database Azure Cosmos DB dengan koleksi sedang dipantau.
collection_name Nama koleksi Azure Cosmos DB yang sedang dipantau.
connection String koneksi Azure Cosmos DB yang sedang dipantau.

Untuk fungsi Python yang ditentukan dengan menggunakan function.json, lihat bagian Konfigurasi .

Anotasi

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.

@CosmosDBTrigger Gunakan anotasi pada parameter yang membaca data dari Azure Cosmos DB. Anotasi mendukung properti berikut ini:

Properti atribut Deskripsi
koneksi Nama pengaturan aplikasi atau koleksi aplikasi yang menentukan cara terhubung ke akun Azure Cosmos DB yang sedang dipantau. Untuk informasi selengkapnya, lihat Sambungan.
nama Nama fungsi.
databaseName Nama database Azure Cosmos DB dengan koleksi sedang dalam pemantauan.
containerName Nama kontainer yang sedang dipantau.
leaseConnectionStringSetting (Opsional) Nama pengaturan aplikasi atau kumpulan pengaturan yang menentukan cara menyambungkan ke akun Azure Cosmos DB yang menyimpan kontainer sewa.

Saat tidak diatur, nilai Connection akan digunakan. Parameter ini secara otomatis diatur saat pengikatan dibuat di portal. String koneksi untuk kontainer sewa harus memiliki izin tulis.
leaseDatabaseName (Opsional) Nama database yang menyimpan kontainer digunakan untuk menyimpan sewa. Saat tidak diatur, nilai databaseName pengaturan digunakan.
leaseContainerName (Opsional) Nama kontainer yang digunakan untuk menyimpan sewa. Saat tidak diatur, nilai leases akan digunakan.
createLeaseContainerIfNotExists (Opsional) Saat diatur ke true, kontainer sewa secara otomatis dibuat jika belum tersedia. Nilai defaultnya adalah false. Saat menggunakan identitas Microsoft Entra jika Anda mengatur nilai ke true, membuat kontainer bukanlah operasi yang diizinkan dan Fungsi Anda tidak akan dimulai.
leasesContainerThroughput (Opsional) Menentukan jumlah Unit Permintaan yang akan ditetapkan ketika kontainer sewa dibuat. Pengaturan ini hanya digunakan saat CreateLeaseContainerIfNotExists diatur ke true. Parameter ini secara otomatis diatur saat pengikatan dibuat menggunakan portal.
leaseContainerPrefix (Opsional) Saat diatur, nilai akan ditambahkan sebagai prefiks untuk sewa yang dibuat dalam kontainer Sewa bagi fungsi ini. Menggunakan prefiks akan memungkinkan dua Azure Functions yang terpisah berbagi kontainer Sewa yang sama dengan menggunakan prefiks yang berbeda.
feedPollDelay (Opsional) Waktu (dalam milidetik) untuk penundaan antara poling partisi untuk perubahan baru pada umpan, setelah semua perubahan terkini dikosongkan. Defaultnya adalah 5.000 milidetik, atau 5 detik.
leaseAcquireInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval memulai tugas yang akan dikomputasi jika partisi didistribusikan secara merata di antara instans host yang dikenal. Defaultnya adalah 13000 (13 detik).
leaseExpirationInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval saat sewa diambil dari sewa yang mewakili partisi. Jika sewa tidak diperbarui dalam interval ini, sewa akan kedaluwarsa dan kepemilikan partisi berpindah ke instans lain. Defaultnya adalah 60000 (60 detik).
leaseRenewInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval perpanjangan semua sewa untuk partisi yang saat ini dipegang oleh instans. Defaultnya adalah 17000 (17 detik).
maxItemsPerInvocation (Opsional) Saat diatur, properti ini menetapkan jumlah maksimum item yang diterima per panggilan Fungsi. Jika operasi di dalam koleksi terpantau dilakukan melalui prosedur yang disimpan, cakupan transaksi akan dipertahankan saat membaca item dari umpan perubahan. Akibatnya, jumlah item yang diterima bisa lebih tinggi dari nilai yang ditentukan sehingga item yang diubah oleh transaksi yang sama ditampilkan sebagai bagian dari satu batch atomik.
startFromBeginning (Opsional) Opsi ini memberi tahu Pemicu untuk membaca perubahan dari awal riwayat perubahan koleksi, dan bukan dimulai pada waktu terkini. Membaca dari awal hanya berfungsi saat pemicu dimulai, karena dalam proses berikutnya, titik pemeriksaan sudah disimpan. Mengatur opsi ini ke true saat ada sewa yang sudah dibuat tidak berpengaruh.
preferredLocations (Opsional) Menentukan lokasi (wilayah) pilihan untuk akun database yang direplikasi geografis di layanan Azure Cosmos DB. Nilai harus dipisahkan koma. Misalnya, "AS Timur, AS Tengah Selatan, Eropa Utara".

Konfigurasi

Hanya berlaku untuk model pemrograman Python v1.

Tabel berikut menjelaskan properti yang bisa Anda atur pada objek yang options diteruskan ke app.cosmosDB() metode . Properti type, direction, dan name tidak berlaku untuk model v4.

Tabel berikut menjelaskan properti konfigurasi pengikatan yang Anda atur di file function.json, di mana properti berbeda menurut versi ekstensinya:

Properti function.json Deskripsi
jenis Harus diatur ke cosmosDBTrigger.
arah Harus diatur ke in. Parameter ini diatur secara otomatis saat Anda membuat pemicu di portal Microsoft Azure.
nama Nama variabel yang digunakan dalam kode fungsi yang mewakili daftar dokumen dengan perubahan.
koneksi Nama pengaturan aplikasi atau koleksi aplikasi yang menentukan cara terhubung ke akun Azure Cosmos DB yang sedang dipantau. Untuk informasi selengkapnya, lihat Sambungan.
databaseName Nama database Azure Cosmos DB dengan koleksi sedang dalam pemantauan.
containerName Nama kontainer yang sedang dipantau.
leaseConnection (Opsional) Nama pengaturan aplikasi atau kontainer pengaturan yang menentukan cara untuk terhubung pada akun Azure Cosmos DB, yang menyimpan kontainer sewa.

Saat tidak diatur, nilai connection akan digunakan. Parameter ini secara otomatis diatur saat pengikatan dibuat di portal. String koneksi untuk kontainer sewa harus memiliki izin tulis.
leaseDatabaseName (Opsional) Nama database yang menyimpan kontainer digunakan untuk menyimpan sewa. Saat tidak diatur, nilai databaseName pengaturan digunakan.
leaseContainerName (Opsional) Nama kontainer yang digunakan untuk menyimpan sewa. Saat tidak diatur, nilai leases akan digunakan.
createLeaseContainerIfNotExists (Opsional) Saat diatur ke true, kontainer sewa secara otomatis dibuat jika belum tersedia. Nilai defaultnya adalah false. Saat menggunakan identitas Microsoft Entra jika Anda mengatur nilai ke true, membuat kontainer bukanlah operasi yang diizinkan dan Fungsi Anda tidak akan dapat dimulai.
leasesContainerThroughput (Opsional) Menentukan jumlah Unit Permintaan yang akan ditetapkan ketika kontainer sewa dibuat. Pengaturan ini hanya digunakan saat createLeaseContainerIfNotExists diatur ke true. Parameter ini secara otomatis diatur saat pengikatan dibuat menggunakan portal.
leaseContainerPrefix (Opsional) Saat diatur, nilai akan ditambahkan sebagai prefiks untuk sewa yang dibuat dalam kontainer Sewa bagi fungsi ini. Menggunakan prefiks akan memungkinkan dua Azure Functions yang terpisah berbagi kontainer Sewa yang sama dengan menggunakan prefiks yang berbeda.
feedPollDelay (Opsional) Waktu (dalam milidetik) untuk penundaan antara poling partisi untuk perubahan baru pada umpan, setelah semua perubahan terkini dikosongkan. Defaultnya adalah 5.000 milidetik, atau 5 detik.
leaseAcquireInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval memulai tugas yang akan dikomputasi jika partisi didistribusikan secara merata di antara instans host yang dikenal. Defaultnya adalah 13000 (13 detik).
leaseExpirationInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval saat sewa diambil dari sewa yang mewakili partisi. Jika sewa tidak diperpanjang dalam interval ini, maka akan menyebabkan kedaluwarsa dan kepemilikan partisi akan pindah ke instans lain. Defaultnya adalah 60000 (60 detik).
leaseRenewInterval (Opsional) Saat diatur, properti ini mendefinisikan, dalam milidetik, interval perpanjangan semua sewa untuk partisi yang saat ini dipegang oleh instans. Defaultnya adalah 17000 (17 detik).
maxItemsPerInvocation (Opsional) Saat diatur, properti ini menetapkan jumlah maksimum item yang diterima per panggilan Fungsi. Jika operasi di dalam koleksi terpantau dilakukan melalui prosedur yang disimpan, cakupan transaksi akan dipertahankan saat membaca item dari umpan perubahan. Akibatnya, jumlah item yang diterima bisa lebih tinggi dari nilai yang ditentukan sehingga item yang diubah oleh transaksi yang sama ditampilkan sebagai bagian dari satu batch atomik.
startFromBeginning (Opsional) Opsi ini memberi tahu Pemicu untuk membaca perubahan dari awal riwayat perubahan koleksi, dan bukan dimulai pada waktu terkini. Membaca dari awal hanya berfungsi saat pemicu dimulai, karena dalam proses berikutnya, titik pemeriksaan sudah disimpan. Mengatur opsi ini ke true saat ada sewa yang sudah dibuat tidak berpengaruh.
startFromTime (Opsional) Mendapatkan atau mengatur tanggal dan waktu untuk menginisialisasi operasi baca bagi umpan perubahan. Format yang disarankan adalah ISO 8601, dengan pendesain UTC seperti 2021-02-16T14:19:29Z. Format ini hanya digunakan untuk mengatur status pemicu awal. Setelah pemicu memiliki status sewa, pengubahan nilai ini tidak akan berpengaruh.
preferredLocations (Opsional) Menentukan lokasi (wilayah) pilihan untuk akun database yang direplikasi geografis di layanan Azure Cosmos DB. Nilai harus dipisahkan koma. Misalnya, "AS Timur, AS Tengah Selatan, Eropa Utara".

Lihat Bagian contoh untuk contoh lengkapnya.

Penggunaan

Pemicu membutuhkan koleksi kedua yang digunakannya untuk menyimpan sewa atas partisi. Baik koleksi terpantau maupun koleksi yang berisi sewa harus tersedia agar pemicu berfungsi.

Penting

Jika beberapa fungsi dikonfigurasi untuk menggunakan pemicu Azure Cosmos DB untuk koleksi yang sama, masing-masing fungsi harus menggunakan koleksi sewa khusus atau menentukan yang berbeda LeaseCollectionPrefix untuk setiap fungsi. Jika tidak, hanya salah satu fungsi yang akan dipicu. Untuk informasi tentang prefiks, lihat bagian Atribut.

Penting

Jika beberapa fungsi dikonfigurasi untuk menggunakan pemicu Azure Cosmos DB untuk koleksi yang sama, masing-masing fungsi harus menggunakan koleksi sewa khusus atau menentukan yang berbeda leaseCollectionPrefix untuk setiap fungsi. Jika tidak, hanya salah satu fungsi yang akan dipicu. Untuk informasi tentang prefiks, lihat bagian Anotasi.

Penting

Jika beberapa fungsi dikonfigurasi untuk menggunakan pemicu Azure Cosmos DB untuk koleksi yang sama, masing-masing fungsi harus menggunakan koleksi sewa khusus atau menentukan yang berbeda leaseCollectionPrefix untuk setiap fungsi. Jika tidak, hanya salah satu fungsi yang akan dipicu. Untuk informasi tentang prefiks, lihat bagian Konfigurasi.

Pemicu tidak menunjukkan apakah dokumen diperbarui atau disisipkan, pemicu hanya menyediakan dokumen itu sendiri. Jika Anda perlu menangani pembaruan dan penyisipan secara berbeda, Anda dapat melakukannya dengan menerapkan bidang tanda waktu untuk penyisipan atau pembaruan.

Jenis parameter yang didukung oleh pemicu Azure Cosmos DB bergantung pada versi runtime Functions, versi paket ekstensi, serta modalitas C# yang digunakan.

Saat Anda ingin fungsi memproses satu dokumen, pemicu Cosmos DB dapat mengikat ke jenis berikut:

Tipe 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:

Tipe 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.

Koneksi

Properti connectionStringSetting/connection dan leaseConnectionStringSetting/leaseConnection adalah referensi ke konfigurasi lingkungan yang menentukan cara aplikasi akan terhubung ke Azure Cosmos DB. Properti ini mungkin menentukan:

Jika nilai yang dikonfigurasi adalah kecocokan persis untuk pengaturan tunggal dan kecocokan awalan untuk pengaturan lainnya, kecocokan persis akan digunakan.

String koneksi

String koneksi untuk akun database Anda harus disimpan dalam pengaturan aplikasi dengan nama yang cocok dengan nilai yang ditentukan oleh properti koneksi dari konfigurasi pengikatan.

Koneksi berbasis identitas

Jika Anda menggunakan ekstensi versi 4.x atau yang lebih tinggi, alih-alih menggunakan string koneksi dengan rahasia, Anda dapat meminta aplikasi menggunakan identitas Microsoft Entra. Untuk melakukannya, Anda akan menentukan pengaturan dengan awalan umum yang dipetakan ke properti koneksi dalam pemicu dan konfigurasi pengikatan.

Dalam mode ini, ekstensi tersebut memerlukan properti berikut:

Properti Templat variabel lingkungan Deskripsi Contoh nilai
Titik Akhir Akun <CONNECTION_NAME_PREFIX>__accountEndpoint URI titik akhir akun Azure Cosmos DB. https://<database_account_name>.documents.azure.com:443/

Properti tambahan dapat diatur untuk menyesuaikan koneksi. Lihat Properti umum untuk koneksi berbasis identitas.

Saat dihosting di layanan Azure Functions, koneksi berbasis identitas menggunakan identitas terkelola. Identitas yang ditetapkan sistem digunakan secara default, meskipun identitas yang ditetapkan pengguna dapat ditentukan dengan credential dan clientID properti. Perhatikan bahwa mengonfigurasi identitas yang ditetapkan oleh pengguna dengan ID sumber daya tidak didukung. Saat dijalankan dalam konteks lain, seperti pengembangan lokal, identitas pengembang Anda digunakan sebagai gantinya, meskipun ini dapat dikustomisasi. Lihat Pengembangan lokal dengan koneksi berbasis identitas.

Memberikan izin kepada identitas

Identitas apa pun yang digunakan harus memiliki izin untuk melakukan tindakan yang dimaksudkan. Untuk sebagian besar layanan Azure, ini berarti Anda perlu menetapkan peran di Azure RBAC, menggunakan peran bawaan atau kustom yang menyediakan izin tersebut.

Penting

Beberapa izin mungkin diekspos oleh layanan target yang tidak diperlukan untuk semua konteks. Jika memungkinkan, patuhi prinsip hak istimewa paling rendah, dengan memberikan identitas hanya hak istimewa yang diperlukan. Misalnya, jika aplikasi hanya perlu dapat membaca dari sumber data, gunakan peran yang hanya memiliki izin untuk membaca. Tidak pantas untuk menetapkan peran yang juga memungkinkan menulis ke layanan itu, karena ini akan menjadi izin yang berlebihan untuk operasi baca. Demikian pula, Anda ingin memastikan penetapan peran hanya mencakup sumber daya yang perlu dibaca.

Cosmos DB tidak menggunakan Azure RBAC untuk operasi data. Sebaliknya, ia menggunakan sistem RBAC bawaan Cosmos DB yang dibangun berdasarkan konsep serupa. Anda perlu membuat penetapan peran yang menyediakan akses ke akun database Anda saat runtime. Peran Azure RBAC Management seperti Pemilik tidak cukup. Tabel berikut ini memperlihatkan peran bawaan yang direkomendasikan saat menggunakan ekstensi Azure Cosmos DB dalam operasi normal. Aplikasi Anda mungkin memerlukan izin tambahan berdasarkan kode yang Anda tulis.

Jenis pengikatan Contoh peran bawaan1
Pemicu2 Kontributor Data Bawaan Cosmos DB
Pengikatan masukan Pembaca Data Bawaan Cosmos DB
Pengikatan output Kontributor Data Bawaan Cosmos DB

1 Peran ini tidak dapat digunakan dalam penetapan peran Azure RBAC. Lihat dokumentasi sistem RBAC bawaan Cosmos DB untuk detail tentang cara menetapkan peran ini.

2 Saat menggunakan identitas, Cosmos DB memperlakukan pembuatan kontainer sebagai operasi manajemen. Ini tidak tersedia sebagai operasi data-plane untuk pemicu. Anda harus memastikan bahwa Anda membuat kontainer yang diperlukan oleh pemicu (termasuk kontainer sewa) sebelum menyiapkan fungsi Anda.

Langkah berikutnya