Azure Cosmos DB-eseményindító az Azure Functions 2.x és újabb verzióihoz

Az Azure Cosmos DB-eseményindító az Azure Cosmos DB változáscsatorna használatával figyeli a partíciók közötti beszúrásokat és frissítéseket. A változáscsatorna új és frissített elemeket tesz közzé, a törlési frissítéseket nem beleértve.

A beállítással és a konfigurációval kapcsolatos információkért tekintse meg az áttekintést.

A Cosmos DB skálázási döntései a Használati és Prémium csomagokhoz célalapú skálázáson keresztül érhetők el. További információ: Célalapú skálázás.

Fontos

Ez a cikk lapokat használ a Node.js programozási modell több verziójának támogatásához. A v4-modell általánosan elérhető, és úgy lett kialakítva, hogy rugalmasabb és intuitívabb felhasználói élményt nyújtson JavaScript- és TypeScript-fejlesztők számára. A v4-modell működésével kapcsolatos további információkért tekintse meg az Azure Functions Node.js fejlesztői útmutatóját. A v3 és a v4 közötti különbségekről a migrálási útmutatóban olvashat bővebben.

Az Azure Functions két Python-programozási modellt támogat. A kötések definiálásának módja a választott programozási modelltől függ.

A Python v2 programozási modell lehetővé teszi, hogy a kötéseket dekorátorokkal definiálja közvetlenül a Python-függvénykódban. További információt a Python fejlesztői útmutatójában talál.

Ez a cikk mindkét programozási modellt támogatja.

Példa

Az eseményindító használata a bővítménycsomag verziójától és a függvényalkalmazásban használt C# modalitástól függ, amely az alábbiak egyike lehet:

A C# függvényt lefordított izolált feldolgozói folyamatosztály-kódtár a futtatókörnyezettől elkülönített folyamatban fut.

Az alábbi példák az adott C# mód bővítményverziójától függenek.

Ez a példa egy egyszerű ToDoItem típusra utal:

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

A rendszer a következő függvényt hívja meg, amikor beszúrások vagy frissítések vannak a megadott adatbázisban és gyűjteményben.

[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);
        }
    }
}

Ezt a függvényt akkor hívja meg a rendszer, ha beszúrások vagy frissítések vannak a megadott adatbázisban és tárolóban.

Az Azure Cosmos DB SDK sémaváltozásai miatt az Azure Cosmos DB-bővítmény 4.x verziójához a Java-függvényekhez azure-functions-java-library V3.0.0 szükséges.

    @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());
    }

A Java-függvények futtatókörnyezeti kódtárában használja a széljegyzetet azon @CosmosDBTrigger paramétereken, amelyek értéke az Azure Cosmos DB-ből származna. Ez a széljegyzet natív Java-típusokkal, POJ-kkal vagy null értékű értékekkel használható a használatával Optional<T>.

Az alábbi példa egy Azure Cosmos DB-eseményindító TypeScript-függvényét mutatja be. A függvény naplóüzeneteket ír az Azure Cosmos DB-rekordok hozzáadásakor vagy módosításakor.

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,
});

Az alábbi példa egy Azure Cosmos DB-eseményindító JavaScript-függvényt mutat be. A függvény naplóüzeneteket ír az Azure Cosmos DB-rekordok hozzáadásakor vagy módosításakor.

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`);
    },
});

Az alábbi példa bemutatja, hogyan futtathat függvényeket adatváltozásként az Azure Cosmos DB-ben.

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

Vegye figyelembe, hogy az Azure Cosmos DB-bővítmény 4.x verziójában néhány kötésattribútum neve módosult.

A run.ps1 fájlban hozzáféréssel rendelkezik ahhoz a dokumentumhoz, amely a paraméteren keresztül aktiválja a függvényt$Documents.

param($Documents, $TriggerMetadata) 

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

Az alábbi példa egy Azure Cosmos DB-eseményindító kötését mutatja be. A példa attól függ, hogy a v1 vagy v2 Python programozási modellt használja-e.

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'])

Attribútumok

A folyamaton belüli és az izolált C#-kódtárak a CosmosDBTriggerAttribute használatával határozzák meg a függvényt. A C#-szkript ehelyett egy function.json konfigurációs fájlt használ a C#-szkriptelési útmutatóban leírtak szerint.

Attribútumtulajdonság Leírás
Kapcsolat Egy alkalmazásbeállítás vagy beállításgyűjtemény neve, amely meghatározza, hogyan csatlakozhat a figyelt Azure Cosmos DB-fiókhoz. További információ: Csatlakozás.
DatabaseName Az Azure Cosmos DB-adatbázis neve a figyelt tárolóval.
ContainerName A figyelt tároló neve.
Bérlet Csatlakozás ion (Nem kötelező) Egy alkalmazásbeállítás vagy beállításgyűjtemény neve, amely meghatározza, hogyan csatlakozhat a bérlettárolót tartalmazó Azure Cosmos DB-fiókhoz.

Ha nincs beállítva, a rendszer az Connection értéket használja. Ez a paraméter automatikusan be lesz állítva, amikor a kötés létrejön a portálon. A bérlettároló kapcsolati sztring írási engedélyekkel kell rendelkeznie.
LeaseDatabaseName (Nem kötelező) A bérletek tárolására használt tárolót tartalmazó adatbázis neve. Ha nincs beállítva, a rendszer a databaseName beállítás értékét használja.
LeaseContainerName (Nem kötelező) A bérletek tárolására használt tároló neve. Ha nincs beállítva, a rendszer az értéket leases használja.
CreateLeaseContainerIfNotExists (Nem kötelező) Ha be van trueállítva, a bérlettároló automatikusan létrejön, ha még nem létezik. Az alapértelmezett érték false. Ha a Microsoft Entra-identitások értékét trueállítja be, a tárolók létrehozása nem engedélyezett művelet , és a függvény nem fog tudni elindulni.
LeasesContainerThroughput (Nem kötelező) Meghatározza a bérlettároló létrehozásakor hozzárendelni kívánt kérelemegységek számát. Ezt a beállítást csak akkor használja a rendszer, ha CreateLeaseContainerIfNotExists be van állítva.true Ez a paraméter automatikusan be lesz állítva, amikor a kötés a portál használatával jön létre.
LeaseContainerPrefix (Nem kötelező) Ha be van állítva, az érték előtagként lesz hozzáadva a függvény bérlettárolójában létrehozott bérletekhez. Az előtagok használatával két különálló Azure Functions különböző előtagokkal oszthatja meg ugyanazt a bérlettárolót.
FeedPollDelay (Nem kötelező) A partíció lekérdezése közötti késés ideje (ezredmásodpercben) a hírcsatorna új módosításainak lekérdezése között, miután az összes aktuális módosítás leürült. Az alapértelmezett érték 5000 ezredmásodperc vagy 5 másodperc.
LeaseAcquireInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg azt az időközt, amely alapján kiszámítható, hogy a partíciók egyenletesen oszlanak-e el az ismert gazdagéppéldányok között. Az alapértelmezett érték 13000 (13 másodperc).
LeaseExpirationInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg azt az időközt, amelyre a bérlet egy partíciót képviselő bérleten történik. Ha a bérlet nem újul meg ebben az intervallumban, az lejár, és a partíció tulajdonjoga egy másik példányra kerül. Az alapértelmezett érték 60000 (60 másodperc).
LeaseRenewInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg a példány által jelenleg tárolt partíciók összes bérletének megújítási időközét. Az alapértelmezett érték 17000 (17 másodperc).
MaxItemsPerInvocation (Nem kötelező) Ha be van állítva, ez a tulajdonság beállítja a függvényhívásonként fogadott elemek maximális számát. Ha a figyelt tárolóban tárolt eljárásokkal hajtják végre a műveleteket, a tranzakció hatóköre megmarad a változáscsatorna elemeinek beolvasásakor. Ennek eredményeképpen a fogadott elemek száma magasabb lehet a megadott értéknél, így az ugyanazon tranzakcióval módosított elemek egy atomi köteg részeként lesznek visszaadva.
StartFromBeginning (Nem kötelező) Ez a beállítás arra utasítja az eseményindítót, hogy az aktuális időpont helyett a tároló változáselőzményeinek kezdetétől olvassa be a módosításokat. Az első olvasás csak az eseményindító első indításakor működik, mivel a későbbi futtatások során a rendszer már tárolja az ellenőrzőpontokat. Ha ezt a beállítást úgy állítja be, hogy true már létrejöttek a bérletek, annak nincs hatása.
StartFromTime (Nem kötelező) Lekéri vagy beállítja a változáscsatorna olvasási műveletének inicializálásának dátumát és időpontját. Az ajánlott formátum az ISO 8601 és az UTC-tervező, például 2021-02-16T14:19:29Z. Ez csak a kezdeti eseményindító állapot beállítására szolgál. Ha az eseményindító bérletállapotú, az érték módosítása nem lép érvénybe.
PreferredLocations (Nem kötelező) Meghatározza a földrajzilag replikált adatbázisfiókok előnyben részesített helyét (régióit) az Azure Cosmos DB szolgáltatásban. Az értékeket vesszővel kell elválasztani. Például: "USA keleti régiója,USA déli középső régiója,Észak-Európa".

Dekorátorok

Csak a Python v2 programozási modellre vonatkozik.

A dekoratőrrel definiált Python v2-függvények esetében a következő tulajdonságok a cosmos_db_triggerkövetkezők:

Tulajdonság Leírás
arg_name A függvénykódban használt változónév, amely a módosításokat tartalmazó dokumentumok listáját jelöli.
database_name Az Azure Cosmos DB-adatbázis neve a figyelt gyűjteménysel.
collection_name A figyelt Azure Cosmos DB-gyűjtemény neve.
connection A figyelt Azure Cosmos DB kapcsolati sztring.

A function.json használatával definiált Python-függvények esetében lásd a Konfiguráció szakaszt.

Jegyzetek

Az Azure Cosmos DB SDK sémaváltozásai miatt az Azure Cosmos DB-bővítmény 4.x verziójához a Java-függvényekhez azure-functions-java-library V3.0.0 szükséges.

Használja a @CosmosDBTrigger megjegyzést olyan paramétereken, amelyek adatokat olvasnak az Azure Cosmos DB-ből. A széljegyzet a következő tulajdonságokat támogatja:

Attribútumtulajdonság Leírás
Kapcsolat Egy alkalmazásbeállítás vagy beállításgyűjtemény neve, amely meghatározza, hogyan csatlakozhat a figyelt Azure Cosmos DB-fiókhoz. További információ: Csatlakozás.
név A függvény neve.
databaseName Az Azure Cosmos DB-adatbázis neve a figyelt tárolóval.
containerName A figyelt tároló neve.
bérlet Csatlakozás ionStringSetting (Nem kötelező) Egy alkalmazásbeállítás vagy beállításgyűjtemény neve, amely meghatározza, hogyan csatlakozhat a bérlettárolót tartalmazó Azure Cosmos DB-fiókhoz.

Ha nincs beállítva, a rendszer az Connection értéket használja. Ez a paraméter automatikusan be lesz állítva, amikor a kötés létrejön a portálon. A bérlettároló kapcsolati sztring írási engedélyekkel kell rendelkeznie.
leaseDatabaseName (Nem kötelező) A bérletek tárolására használt tárolót tartalmazó adatbázis neve. Ha nincs beállítva, a rendszer a databaseName beállítás értékét használja.
leaseContainerName (Nem kötelező) A bérletek tárolására használt tároló neve. Ha nincs beállítva, a rendszer az értéket leases használja.
createLeaseContainerIfNotExists (Nem kötelező) Ha be van trueállítva, a bérlettároló automatikusan létrejön, ha még nem létezik. Az alapértelmezett érték false. Ha a Microsoft Entra-identitások értékét trueállítja be, a tárolók létrehozása nem engedélyezett művelet , és a függvény nem indul el.
leasesContainerThroughput (Nem kötelező) Meghatározza a bérlettároló létrehozásakor hozzárendelni kívánt kérelemegységek számát. Ezt a beállítást csak akkor használja a rendszer, ha CreateLeaseContainerIfNotExists be van állítva.true Ez a paraméter automatikusan be lesz állítva, amikor a kötés a portál használatával jön létre.
leaseContainerPrefix (Nem kötelező) Ha be van állítva, az érték előtagként lesz hozzáadva a függvény bérlettárolójában létrehozott bérletekhez. Az előtagok használatával két különálló Azure Functions különböző előtagokkal oszthatja meg ugyanazt a bérlettárolót.
feedPollDelay (Nem kötelező) A partíció lekérdezése közötti késés ideje (ezredmásodpercben) a hírcsatorna új módosításainak lekérdezése között, miután az összes aktuális módosítás leürült. Az alapértelmezett érték 5000 ezredmásodperc vagy 5 másodperc.
leaseAcquireInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg azt az időközt, amely alapján kiszámítható, hogy a partíciók egyenletesen oszlanak-e el az ismert gazdagéppéldányok között. Az alapértelmezett érték 13000 (13 másodperc).
leaseExpirationInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg azt az időközt, amelyre a bérlet egy partíciót képviselő bérleten történik. Ha a bérlet nem újul meg ebben az intervallumban, lejár, és a partíció tulajdonjoga egy másik példányra kerül. Az alapértelmezett érték 60000 (60 másodperc).
leaseRenewInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg a példány által jelenleg tárolt partíciók összes bérletének megújítási időközét. Az alapértelmezett érték 17000 (17 másodperc).
maxItemsPerInvocation (Nem kötelező) Ha be van állítva, ez a tulajdonság beállítja a függvényhívásonként fogadott elemek maximális számát. Ha a figyelt tárolóban tárolt eljárásokkal hajtják végre a műveleteket, a tranzakció hatóköre megmarad a változáscsatorna elemeinek beolvasásakor. Ennek eredményeképpen a fogadott elemek száma magasabb lehet a megadott értéknél, így az ugyanazon tranzakcióval módosított elemek egy atomi köteg részeként lesznek visszaadva.
startFromBeginning (Nem kötelező) Ez a beállítás arra utasítja az eseményindítót, hogy az aktuális időpont helyett a tároló változáselőzményeinek kezdetétől olvassa be a módosításokat. Az első olvasás csak az eseményindító első indításakor működik, mivel a későbbi futtatások során a rendszer már tárolja az ellenőrzőpontokat. Ha ezt a beállítást úgy állítja be, hogy true már létrejöttek a bérletek, annak nincs hatása.
preferredLocations (Nem kötelező) Meghatározza a földrajzilag replikált adatbázisfiókok előnyben részesített helyét (régióit) az Azure Cosmos DB szolgáltatásban. Az értékeket vesszővel kell elválasztani. Például: "USA keleti régiója,USA déli középső régiója,Észak-Európa".

Konfiguráció

Csak a Python v1 programozási modellre vonatkozik.

Az alábbi táblázat a metódusnak app.cosmosDB() átadott objektumon options beállítható tulajdonságokat ismerteti. A type, directionés name a tulajdonságok nem vonatkoznak a v4-modellre.

Az alábbi táblázat a function.json fájlban beállított kötéskonfigurációs tulajdonságokat ismerteti, ahol a tulajdonságok bővítményverziónként eltérnek:

function.json tulajdonság Leírás
type A beállításnak a cosmosDBTriggerkövetkezőnek kell lennie: .
direction A beállításnak a inkövetkezőnek kell lennie: . Ez a paraméter automatikusan be van állítva, amikor létrehozza az eseményindítót az Azure Portalon.
név A függvénykódban használt változónév, amely a módosításokat tartalmazó dokumentumok listáját jelöli.
Kapcsolat Egy alkalmazásbeállítás vagy beállításgyűjtemény neve, amely meghatározza, hogyan csatlakozhat a figyelt Azure Cosmos DB-fiókhoz. További információ: Csatlakozás.
databaseName Az Azure Cosmos DB-adatbázis neve a figyelt tárolóval.
containerName A figyelt tároló neve.
bérlet Csatlakozás ion (Nem kötelező) Egy alkalmazásbeállítás vagy beállítástároló neve, amely meghatározza, hogyan csatlakozhat a bérlettárolót tartalmazó Azure Cosmos DB-fiókhoz.

Ha nincs beállítva, a rendszer az connection értéket használja. Ez a paraméter automatikusan be lesz állítva, amikor a kötés létrejön a portálon. A bérlettároló kapcsolati sztring írási engedélyekkel kell rendelkeznie.
leaseDatabaseName (Nem kötelező) A bérletek tárolására használt tárolót tartalmazó adatbázis neve. Ha nincs beállítva, a rendszer a databaseName beállítás értékét használja.
leaseContainerName (Nem kötelező) A bérletek tárolására használt tároló neve. Ha nincs beállítva, a rendszer az értéket leases használja.
createLeaseContainerIfNotExists (Nem kötelező) Ha be van trueállítva, a bérlettároló automatikusan létrejön, ha még nem létezik. Az alapértelmezett érték false. Ha a Microsoft Entra-identitások értékét trueállítja be, a tárolók létrehozása nem engedélyezett művelet , és a függvény nem fog tudni elindulni.
leasesContainerThroughput (Nem kötelező) Meghatározza a bérlettároló létrehozásakor hozzárendelni kívánt kérelemegységek számát. Ezt a beállítást csak akkor használja a rendszer, ha createLeaseContainerIfNotExists be van állítva.true Ez a paraméter automatikusan be lesz állítva, amikor a kötés a portál használatával jön létre.
leaseContainerPrefix (Nem kötelező) Ha be van állítva, az érték előtagként lesz hozzáadva a függvény bérlettárolójában létrehozott bérletekhez. Az előtagok használatával két különálló Azure Functions különböző előtagokkal oszthatja meg ugyanazt a bérlettárolót.
feedPollDelay (Nem kötelező) A partíció lekérdezése közötti késés ideje (ezredmásodpercben) a hírcsatorna új módosításainak lekérdezése között, miután az összes aktuális módosítás leürült. Az alapértelmezett érték 5000 ezredmásodperc vagy 5 másodperc.
leaseAcquireInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg azt az időközt, amely alapján kiszámítható, hogy a partíciók egyenletesen oszlanak-e el az ismert gazdagéppéldányok között. Az alapértelmezett érték 13000 (13 másodperc).
leaseExpirationInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg azt az időközt, amelyre a bérlet egy partíciót képviselő bérleten történik. Ha a bérlet nem újul meg ebben az intervallumban, az lejár, és a partíció tulajdonjoga egy másik példányra kerül. Az alapértelmezett érték 60000 (60 másodperc).
leaseRenewInterval (Nem kötelező) Ha be van állítva, ezredmásodpercben határozza meg a példány által jelenleg tárolt partíciók összes bérletének megújítási időközét. Az alapértelmezett érték 17000 (17 másodperc).
maxItemsPerInvocation (Nem kötelező) Ha be van állítva, ez a tulajdonság beállítja a függvényhívásonként fogadott elemek maximális számát. Ha a figyelt tárolóban tárolt eljárásokkal hajtják végre a műveleteket, a tranzakció hatóköre megmarad a változáscsatorna elemeinek beolvasásakor. Ennek eredményeképpen a fogadott elemek száma magasabb lehet a megadott értéknél, így az ugyanazon tranzakcióval módosított elemek egy atomi köteg részeként lesznek visszaadva.
startFromBeginning (Nem kötelező) Ez a beállítás arra utasítja az eseményindítót, hogy az aktuális időpont helyett a tároló változáselőzményeinek kezdetétől olvassa be a módosításokat. Az első olvasás csak az eseményindító első indításakor működik, mivel a későbbi futtatások során a rendszer már tárolja az ellenőrzőpontokat. Ha ezt a beállítást úgy állítja be, hogy true már létrejöttek a bérletek, annak nincs hatása.
startFromTime (Nem kötelező) Lekéri vagy beállítja a változáscsatorna olvasási műveletének inicializálásának dátumát és időpontját. Az ajánlott formátum az ISO 8601 és az UTC-tervező, például 2021-02-16T14:19:29Z. Ez csak a kezdeti eseményindító állapot beállítására szolgál. Ha az eseményindító bérletállapotú, az érték módosítása nem lép érvénybe.
preferredLocations (Nem kötelező) Meghatározza a földrajzilag replikált adatbázisfiókok előnyben részesített helyét (régióit) az Azure Cosmos DB szolgáltatásban. Az értékeket vesszővel kell elválasztani. Például: "USA keleti régiója,USA déli középső régiója,Észak-Európa".

A teljes példákért tekintse meg a Példa szakaszt .

Használat

Az eseményindítóhoz egy második gyűjteményre van szükség, amelyet a partíciók bérleteinek tárolására használ. A figyelt gyűjteménynek és a bérleteket tartalmazó gyűjteménynek is elérhetőnek kell lennie az eseményindító működéséhez.

Fontos

Ha több függvény van konfigurálva arra, hogy egy Azure Cosmos DB-eseményindítót használjon ugyanahhoz a gyűjteményhez, mindegyik függvénynek dedikált bérletgyűjteményt kell használnia, vagy minden függvényhez másikat LeaseCollectionPrefix kell megadnia. Ellenkező esetben a rendszer csak az egyik függvényt aktiválja. Az előtaggal kapcsolatos információkért tekintse meg az Attribútumok szakaszt.

Fontos

Ha több függvény van konfigurálva arra, hogy egy Azure Cosmos DB-eseményindítót használjon ugyanahhoz a gyűjteményhez, mindegyik függvénynek dedikált bérletgyűjteményt kell használnia, vagy minden függvényhez másikat leaseCollectionPrefix kell megadnia. Ellenkező esetben a rendszer csak az egyik függvényt aktiválja. Az előtaggal kapcsolatos információkért tekintse meg a Széljegyzetek szakaszt.

Fontos

Ha több függvény van konfigurálva arra, hogy egy Azure Cosmos DB-eseményindítót használjon ugyanahhoz a gyűjteményhez, mindegyik függvénynek dedikált bérletgyűjteményt kell használnia, vagy minden függvényhez másikat leaseCollectionPrefix kell megadnia. Ellenkező esetben a rendszer csak az egyik függvényt aktiválja. Az előtaggal kapcsolatos információkért tekintse meg a Konfiguráció szakaszt.

Az eseményindító nem jelzi, hogy frissítettek vagy beszúrtak-e egy dokumentumot, csak magát a dokumentumot adja meg. Ha másképp kell kezelnie a frissítéseket és a beszúrásokat, ezt úgy teheti meg, hogy időbélyegmezőket implementál a beszúráshoz vagy a frissítéshez.

Az Azure Cosmos DB-eseményindító által támogatott paramétertípus a Functions futtatókörnyezet verziójától, a bővítménycsomag verziójától és a használt C# módtól függ.

Ha azt szeretné, hogy a függvény egyetlen dokumentumot dolgoz fel, a Cosmos DB-eseményindító a következő típusokhoz tud kapcsolódni:

Típus Leírás
JSON szerializálható típusok A Functions megpróbálja deszerializálni a dokumentum JSON-adatait a Cosmos DB változáscsatornájából egy egyszerű régi CLR-objektum (POCO) típusba.

Ha azt szeretné, hogy a függvény feldolgozza a dokumentumok kötegét, a Cosmos DB-eseményindító a következő típusokhoz tud kapcsolódni:

Típus Leírás
IEnumerable<T>ahol T egy JSON szerializálható típus A kötegben szereplő entitások számbavétele. Minden bejegyzés egy dokumentumot jelöl a Cosmos DB változáscsatornájából.

Kapcsolatok

A connectionStringSetting/connection tulajdonságok a leaseConnectionStringSetting/leaseConnection környezetkonfigurációra mutató hivatkozások, amelyek meghatározzák, hogyan kell az alkalmazásnak csatlakoznia az Azure Cosmos DB-hez. A következőt határozhatják meg:

Ha a konfigurált érték egy adott beállítás pontos egyezése, a többi beállítás előtagja pedig egyezik, akkor a rendszer a pontos egyezést használja.

Kapcsolati sztring

Az adatbázisfiók kapcsolati sztring egy olyan alkalmazásbeállításban kell tárolni, amely a kötéskonfiguráció kapcsolattulajdonsága által megadott értéknek megfelelő névvel rendelkezik.

Identitásalapú kapcsolatok

Ha a bővítmény 4.x vagy újabb verzióját használja, ahelyett, hogy titkos kapcsolati sztring használ, az alkalmazás Microsoft Entra-identitást használhat. Ehhez egy közös előtagban definiálhat beállításokat, amelyek leképezik az eseményindító és a kötés konfigurációjának kapcsolat tulajdonságát.

Ebben a módban a bővítményhez a következő tulajdonságok szükségesek:

Tulajdonság Környezeti változó sablonja Leírás Példaérték
Fiókvégpont <CONNECTION_NAME_PREFIX>__accountEndpoint Az Azure Cosmos DB-fiók végpontjának URI-ja. <https:// database_account_name.documents.azure.com:443/>

További tulajdonságok is beállíthatók a kapcsolat testreszabásához. Tekintse meg az identitásalapú kapcsolatok gyakori tulajdonságait.

Az Azure Functions szolgáltatásban üzemeltetett identitásalapú kapcsolatok felügyelt identitást használnak. A rendszer alapértelmezés szerint a rendszer által hozzárendelt identitást használja, bár a felhasználó által hozzárendelt identitás megadható a credential tulajdonságokkal együtt clientID . Vegye figyelembe, hogy a felhasználó által hozzárendelt identitás erőforrás-azonosítóval való konfigurálása nem támogatott. Ha más környezetekben, például helyi fejlesztésben fut, a rendszer ehelyett a fejlesztői identitást használja, bár ez testre szabható. Lásd: Helyi fejlesztés identitásalapú kapcsolatokkal.

Engedély megadása az identitáshoz

Bármilyen identitást is használ, rendelkeznie kell a kívánt műveletek végrehajtásához szükséges engedélyekkel. A legtöbb Azure-szolgáltatás esetében ez azt jelenti, hogy egy szerepkört kell hozzárendelnie az Azure RBAC-ben beépített vagy egyéni szerepkörökkel, amelyek biztosítják ezeket az engedélyeket.

Fontos

A célszolgáltatás bizonyos engedélyeket közzétehet, amelyek nem minden környezethez szükségesek. Ahol lehetséges, tartsa be a minimális jogosultság elvét, és csak az identitáshoz szükséges jogosultságokat adja meg. Ha például az alkalmazásnak csak adatforrásból kell olvasnia, használjon olyan szerepkört, amely csak olvasási engedéllyel rendelkezik. Nem lenne helyénvaló olyan szerepkört hozzárendelni, amely lehetővé teszi az írást is a szolgáltatáshoz, mivel ez túlzott engedély lenne egy olvasási művelethez. Hasonlóképpen meg szeretné győződni arról, hogy a szerepkör-hozzárendelés csak az elolvasandó erőforrásokra terjed ki.

A Cosmos DB nem használja az Azure RBAC-t adatműveletekhez. Ehelyett egy Cosmos DB beépített RBAC-rendszert használ, amely hasonló fogalmakra épül. Létre kell hoznia egy szerepkör-hozzárendelést, amely futásidőben hozzáférést biztosít az adatbázisfiókhoz. Az Azure RBAC Management-szerepkörök, például a Tulajdonos nem elegendőek. Az alábbi táblázat azOkat a beépített szerepköröket mutatja be, amelyek az Azure Cosmos DB-bővítmény normál működésben való használatakor ajánlottak. Előfordulhat, hogy az alkalmazás további engedélyeket igényel az Ön által írt kód alapján.

Kötés típusa Példa beépített szerepkörök1
Trigger2 A Cosmos DB beépített adatszolgáltatója
Bemeneti kötés Cosmos DB beépített adatolvasó
Kimeneti kötés A Cosmos DB beépített adatszolgáltatója

1 Ezek a szerepkörök nem használhatók Azure RBAC-szerepkör-hozzárendelésben. A szerepkörök hozzárendelésével kapcsolatos részletekért tekintse meg a Cosmos DB beépített RBAC-rendszerdokumentációját .

2 Identitás használatakor a Cosmos DB felügyeleti műveletként kezeli a tároló létrehozását. Nem érhető el adatsík-műveletként az eseményindítóhoz. A függvény beállítása előtt meg kell győződnie arról, hogy az eseményindítóhoz szükséges tárolókat hozza létre (beleértve a bérlettárolót is).

Következő lépések