Delen via


Azure Cosmos DB-trigger voor Azure Functions 2.x en hoger

De Azure Cosmos DB-trigger maakt gebruik van de Azure Cosmos DB-wijzigingenfeed om te luisteren naar invoegingen en updates tussen partities. De wijzigingenfeed publiceert nieuwe en bijgewerkte items, niet inclusief updates van verwijderingen.

Zie het overzicht voor informatie over het instellen en configureren van details.

Cosmos DB-schaalbeslissingen voor de abonnementen Verbruik en Premium worden uitgevoerd via schaalaanpassing op basis van doel. Zie Schalen op basis van doel voor meer informatie.

Belangrijk

In dit artikel worden tabbladen gebruikt ter ondersteuning van meerdere versies van het Node.js programmeermodel. Het v4-model is algemeen beschikbaar en is ontworpen voor een flexibelere en intuïtievere ervaring voor JavaScript- en TypeScript-ontwikkelaars. Raadpleeg de ontwikkelaarshandleiding voor Azure Functions Node.js voor meer informatie over hoe het v4-model werkt. Raadpleeg de migratiehandleiding voor meer informatie over de verschillen tussen v3 en v4.

Azure Functions ondersteunt twee programmeermodellen voor Python. De manier waarop u uw bindingen definieert, is afhankelijk van het gekozen programmeermodel.

Met het Python v2-programmeermodel kunt u bindingen definiëren met behulp van decorators rechtstreeks in uw Python-functiecode. Zie de Ontwikkelaarshandleiding voor Python voor meer informatie.

Dit artikel ondersteunt beide programmeermodellen.

Opmerking

Het gebruik van de trigger is afhankelijk van de versie van het extensiepakket en de C#-modaliteit die wordt gebruikt in uw functie-app. Dit kan een van de volgende opties zijn:

Een geïsoleerde werkprocesklassebibliotheek gecompileerde C#-functie wordt uitgevoerd in een proces dat is geïsoleerd van de runtime.

De volgende voorbeelden zijn afhankelijk van de extensieversie voor de opgegeven C#-modus.

Dit voorbeeld verwijst naar een eenvoudig ToDoItem type:

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

De volgende functie wordt aangeroepen wanneer de opgegeven database en verzameling worden ingevoegd of bijgewerkt.

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

Deze functie wordt aangeroepen wanneer de opgegeven database en container worden ingevoegd of bijgewerkt.

Vanwege schemawijzigingen in de Azure Cosmos DB SDK vereist versie 4.x van de Azure Cosmos DB-extensie azure-functions-java-library V3.0.0 voor Java-functies.

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

Gebruik in de Runtime-bibliotheek van Java-functies de @CosmosDBTrigger aantekening voor parameters waarvan de waarde afkomstig is van Azure Cosmos DB. Deze aantekening kan worden gebruikt met systeemeigen Java-typen, POJO's of nullbare waarden met Optional<T>.

In het volgende voorbeeld ziet u een TypeScript-functie voor een Azure Cosmos DB-trigger. De functie schrijft logboekberichten wanneer Azure Cosmos DB-records worden toegevoegd of gewijzigd.

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

In het volgende voorbeeld ziet u een JavaScript-functie voor de Azure Cosmos DB-trigger. De functie schrijft logboekberichten wanneer Azure Cosmos DB-records worden toegevoegd of gewijzigd.

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

In het volgende voorbeeld ziet u hoe u een functie uitvoert als gegevenswijzigingen in Azure Cosmos DB.

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

Houd er rekening mee dat sommige bindingskenmerknamen zijn gewijzigd in versie 4.x van de Azure Cosmos DB-extensie.

In het bestand run.ps1 hebt u toegang tot het document dat de functie activeert via de $Documents parameter.

param($Documents, $TriggerMetadata) 

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

In het volgende voorbeeld ziet u een Azure Cosmos DB-triggerbinding. Het voorbeeld is afhankelijk van of u het python-programmeermodel v1 of v2 gebruikt.

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

Kenmerken

Zowel in-process - als geïsoleerde C #-bibliotheken gebruiken de CosmosDBTriggerAttribute om de functie te definiëren. C#-script maakt in plaats daarvan gebruik van een function.json configuratiebestand, zoals beschreven in de handleiding voor C#-scripts.

Kenmerkeigenschap Beschrijving
Verbinding De naam van een app-instelling of verzameling die aangeeft hoe verbinding moet worden gemaakt met het Azure Cosmos DB-account dat wordt bewaakt. Zie Verbindingen voor meer informatie.
DatabaseName De naam van de Azure Cosmos DB-database met de container die wordt bewaakt.
ContainerName De naam van de container die wordt bewaakt.
LeaseConnection (Optioneel) De naam van een app-instelling of verzameling die aangeeft hoe u verbinding maakt met het Azure Cosmos DB-account dat de leasecontainer bevat.

Wanneer deze niet is ingesteld, wordt de Connection waarde gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal. De verbindingsreeks voor de leasecontainer moet schrijfmachtigingen hebben.
LeaseDatabaseName (Optioneel) De naam van de database met de container die wordt gebruikt voor het opslaan van leases. Als deze instelling niet is ingesteld, wordt de waarde van de databaseName instelling gebruikt.
LeaseContainerName (Optioneel) De naam van de container die wordt gebruikt voor het opslaan van leases. Wanneer deze niet is ingesteld, wordt de waarde leases gebruikt.
CreateLeaseContainerIfNotExists (Optioneel) Wanneer deze optie is ingesteld true, wordt de leasecontainer automatisch gemaakt wanneer deze nog niet bestaat. De standaardwaarde is false. Wanneer u Microsoft Entra-identiteiten gebruikt als u de waarde trueinstelt, is het maken van containers geen toegestane bewerking en kan uw functie niet worden gestart.
LeasesContainerThroughput (Optioneel) Hiermee definieert u het aantal aanvraageenheden dat moet worden toegewezen wanneer de leasecontainer wordt gemaakt. Deze instelling wordt alleen gebruikt wanneer CreateLeaseContainerIfNotExists deze is ingesteld op true. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt met behulp van de portal.
LeaseContainerPrefix (Optioneel) Wanneer deze optie is ingesteld, wordt de waarde toegevoegd als voorvoegsel voor de leases die zijn gemaakt in de leasecontainer voor deze functie. Met behulp van een voorvoegsel kunnen twee afzonderlijke Azure Functions dezelfde Lease-container delen met behulp van verschillende voorvoegsels.
FeedPollDelay (Optioneel) De tijd (in milliseconden) voor de vertraging tussen het peilen van een partitie voor nieuwe wijzigingen in de feed, nadat alle huidige wijzigingen zijn leeggezogen. De standaardwaarde is 5000 milliseconden of 5 seconden.
LeaseAcquireInterval (Optioneel) Wanneer deze optie is ingesteld, definieert deze, in milliseconden, het interval voor het starten van een taak om te berekenen of partities gelijkmatig worden verdeeld over bekende hostinstanties. De standaardwaarde is 13000 (13 seconden).
LeaseExpirationInterval (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het interval waarvoor de lease wordt genomen in een lease die een partitie vertegenwoordigt. Als de lease niet binnen dit interval wordt vernieuwd, wordt deze verlopen en wordt het eigendom van de partitie verplaatst naar een ander exemplaar. De standaardwaarde is 60000 (60 seconden).
LeaseRenewInterval (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het vernieuwingsinterval voor alle leases voor partities die momenteel door een exemplaar worden bewaard. De standaardwaarde is 17000 (17 seconden).
MaxItemsPerInvocation (Optioneel) Wanneer deze eigenschap is ingesteld, wordt het maximum aantal items ingesteld dat per functie-aanroep is ontvangen. Als bewerkingen in de bewaakte container worden uitgevoerd via opgeslagen procedures, blijft het transactiebereik behouden bij het lezen van items uit de wijzigingenfeed. Als gevolg hiervan kan het aantal ontvangen items hoger zijn dan de opgegeven waarde, zodat de items die door dezelfde transactie zijn gewijzigd, worden geretourneerd als onderdeel van één atomische batch.
StartFromBeginning (Optioneel) Met deze optie wordt aan de trigger aangegeven dat wijzigingen vanaf het begin van de wijzigingsgeschiedenis van de container moeten worden gelezen in plaats van op het huidige tijdstip te beginnen. Lezen vanaf het begin werkt alleen wanneer de trigger voor het eerst wordt gestart, zoals in volgende uitvoeringen, de controlepunten al zijn opgeslagen. Het instellen van deze optie op true wanneer er al leases zijn gemaakt, heeft geen effect.
StartFromTime (Optioneel) Hiermee haalt u de datum en tijd op van waaruit de leesbewerking van de wijzigingenfeed moet worden geïnitialiseerd. De aanbevolen indeling is ISO 8601 met de UTC-ontwerpaar, zoals 2021-02-16T14:19:29Z. Dit wordt alleen gebruikt om de eerste triggerstatus in te stellen. Nadat de trigger een leasestatus heeft, heeft het wijzigen van deze waarde geen effect.
PreferredLocations (Optioneel) Definieert voorkeurslocaties (regio's) voor geo-gerepliceerde databaseaccounts in de Azure Cosmos DB-service. Waarden moeten door komma's worden gescheiden. Bijvoorbeeld 'VS - oost,VS - zuid-centraal,Europa - noord'.

Decorators

Is alleen van toepassing op het Python v2-programmeermodel.

Voor Python v2-functies die zijn gedefinieerd met behulp van een decorator, zijn de volgende eigenschappen op het cosmos_db_triggervolgende:

Eigenschappen Beschrijving
arg_name De naam van de variabele die wordt gebruikt in functiecode die de lijst met documenten met wijzigingen vertegenwoordigt.
database_name De naam van de Azure Cosmos DB-database met de verzameling die wordt bewaakt.
collection_name De naam van de Azure Cosmos DB-verzameling die wordt bewaakt.
connection De verbindingsreeks van de Azure Cosmos DB die wordt bewaakt.

Zie de sectie Configuratie voor Python-functies die zijn gedefinieerd met behulp van function.json.

Aantekeningen

Vanwege schemawijzigingen in de Azure Cosmos DB SDK vereist versie 4.x van de Azure Cosmos DB-extensie azure-functions-java-library V3.0.0 voor Java-functies.

Gebruik de @CosmosDBTrigger aantekening voor parameters die gegevens lezen uit Azure Cosmos DB. De aantekening ondersteunt de volgende eigenschappen:

Kenmerkeigenschap Beschrijving
verbinding De naam van een app-instelling of verzameling die aangeeft hoe verbinding moet worden gemaakt met het Azure Cosmos DB-account dat wordt bewaakt. Zie Verbindingen voor meer informatie.
name De naam van de functie.
databaseName De naam van de Azure Cosmos DB-database met de container die wordt bewaakt.
containerName De naam van de container die wordt bewaakt.
leaseConnectionStringSetting (Optioneel) De naam van een app-instelling of verzameling die aangeeft hoe u verbinding maakt met het Azure Cosmos DB-account dat de leasecontainer bevat.

Wanneer deze niet is ingesteld, wordt de Connection waarde gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal. De verbindingsreeks voor de leasecontainer moet schrijfmachtigingen hebben.
leaseDatabaseName (Optioneel) De naam van de database met de container die wordt gebruikt voor het opslaan van leases. Als deze instelling niet is ingesteld, wordt de waarde van de databaseName instelling gebruikt.
leaseContainerName (Optioneel) De naam van de container die wordt gebruikt voor het opslaan van leases. Wanneer deze niet is ingesteld, wordt de waarde leases gebruikt.
createLeaseContainerIfNotExists (Optioneel) Wanneer deze optie is ingesteld true, wordt de leasecontainer automatisch gemaakt wanneer deze nog niet bestaat. De standaardwaarde is false. Wanneer u Microsoft Entra-identiteiten gebruikt als u de waarde trueinstelt, is het maken van containers geen toegestane bewerking en wordt uw functie niet gestart.
leasesContainerThroughput (Optioneel) Hiermee definieert u het aantal aanvraageenheden dat moet worden toegewezen wanneer de leasecontainer wordt gemaakt. Deze instelling wordt alleen gebruikt wanneer CreateLeaseContainerIfNotExists deze is ingesteld op true. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt met behulp van de portal.
leaseContainerPrefix (Optioneel) Wanneer deze optie is ingesteld, wordt de waarde toegevoegd als voorvoegsel voor de leases die zijn gemaakt in de leasecontainer voor deze functie. Met behulp van een voorvoegsel kunnen twee afzonderlijke Azure Functions dezelfde Lease-container delen met behulp van verschillende voorvoegsels.
feedPollDelay (Optioneel) De tijd (in milliseconden) voor de vertraging tussen het peilen van een partitie voor nieuwe wijzigingen in de feed, nadat alle huidige wijzigingen zijn leeggezogen. De standaardwaarde is 5000 milliseconden of 5 seconden.
leaseAcquireInterval (Optioneel) Wanneer deze optie is ingesteld, definieert deze, in milliseconden, het interval voor het starten van een taak om te berekenen of partities gelijkmatig worden verdeeld over bekende hostinstanties. De standaardwaarde is 13000 (13 seconden).
leaseExpirationInterval (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het interval waarvoor de lease wordt genomen in een lease die een partitie vertegenwoordigt. Als de lease niet binnen dit interval wordt verlengd, verloopt deze en wordt het eigendom van de partitie verplaatst naar een ander exemplaar. De standaardwaarde is 60000 (60 seconden).
leaseRenewInterval (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het vernieuwingsinterval voor alle leases voor partities die momenteel door een exemplaar worden bewaard. De standaardwaarde is 17000 (17 seconden).
maxItemsPerInvocation (Optioneel) Wanneer deze eigenschap is ingesteld, wordt het maximum aantal items ingesteld dat per functie-aanroep is ontvangen. Als bewerkingen in de bewaakte container worden uitgevoerd via opgeslagen procedures, blijft het transactiebereik behouden bij het lezen van items uit de wijzigingenfeed. Als gevolg hiervan kan het aantal ontvangen items hoger zijn dan de opgegeven waarde, zodat de items die door dezelfde transactie zijn gewijzigd, worden geretourneerd als onderdeel van één atomische batch.
startFromBeginning (Optioneel) Met deze optie wordt aan de trigger aangegeven dat wijzigingen vanaf het begin van de wijzigingsgeschiedenis van de container moeten worden gelezen in plaats van op het huidige tijdstip te beginnen. Lezen vanaf het begin werkt alleen wanneer de trigger voor het eerst wordt gestart, zoals in volgende uitvoeringen, de controlepunten al zijn opgeslagen. Het instellen van deze optie op true wanneer er al leases zijn gemaakt, heeft geen effect.
preferredLocations (Optioneel) Definieert voorkeurslocaties (regio's) voor geo-gerepliceerde databaseaccounts in de Azure Cosmos DB-service. Waarden moeten door komma's worden gescheiden. Bijvoorbeeld 'VS - oost,VS - zuid-centraal,Europa - noord'.

Configuratie

Is alleen van toepassing op het Python v1-programmeermodel.

In de volgende tabel worden de eigenschappen uitgelegd die u kunt instellen voor het options object dat aan de app.cosmosDB() methode is doorgegeven. De typeeigenschappen en directionname eigenschappen zijn niet van toepassing op het v4-model.

In de volgende tabel worden de bindingsconfiguratie-eigenschappen uitgelegd die u in het function.json-bestand hebt ingesteld, waarbij de eigenschappen verschillen per extensieversie:

function.json-eigenschap Beschrijving
type Moet worden ingesteld op cosmosDBTrigger.
direction Moet worden ingesteld op in. Deze parameter wordt automatisch ingesteld wanneer u de trigger maakt in Azure Portal.
name De naam van de variabele die wordt gebruikt in functiecode die de lijst met documenten met wijzigingen vertegenwoordigt.
verbinding De naam van een app-instelling of verzameling die aangeeft hoe verbinding moet worden gemaakt met het Azure Cosmos DB-account dat wordt bewaakt. Zie Verbindingen voor meer informatie.
databaseName De naam van de Azure Cosmos DB-database met de container die wordt bewaakt.
containerName De naam van de container die wordt bewaakt.
leaseConnection (Optioneel) De naam van een app-instelling of instellingscontainer die aangeeft hoe verbinding moet worden gemaakt met het Azure Cosmos DB-account dat de leasecontainer bevat.

Wanneer deze niet is ingesteld, wordt de connection waarde gebruikt. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt in de portal. De verbindingsreeks voor de leasecontainer moet schrijfmachtigingen hebben.
leaseDatabaseName (Optioneel) De naam van de database met de container die wordt gebruikt voor het opslaan van leases. Als deze instelling niet is ingesteld, wordt de waarde van de databaseName instelling gebruikt.
leaseContainerName (Optioneel) De naam van de container die wordt gebruikt voor het opslaan van leases. Wanneer deze niet is ingesteld, wordt de waarde leases gebruikt.
createLeaseContainerIfNotExists (Optioneel) Wanneer deze optie is ingesteld true, wordt de leasecontainer automatisch gemaakt wanneer deze nog niet bestaat. De standaardwaarde is false. Wanneer u Microsoft Entra-identiteiten gebruikt als u de waarde trueinstelt, is het maken van containers geen toegestane bewerking en kan uw functie niet worden gestart.
leasesContainerThroughput (Optioneel) Hiermee definieert u het aantal aanvraageenheden dat moet worden toegewezen wanneer de leasecontainer wordt gemaakt. Deze instelling wordt alleen gebruikt wanneer createLeaseContainerIfNotExists deze is ingesteld op true. Deze parameter wordt automatisch ingesteld wanneer de binding wordt gemaakt met behulp van de portal.
leaseContainerPrefix (Optioneel) Wanneer deze optie is ingesteld, wordt de waarde toegevoegd als voorvoegsel voor de leases die zijn gemaakt in de leasecontainer voor deze functie. Met behulp van een voorvoegsel kunnen twee afzonderlijke Azure Functions dezelfde Lease-container delen met behulp van verschillende voorvoegsels.
feedPollDelay (Optioneel) De tijd (in milliseconden) voor de vertraging tussen het peilen van een partitie voor nieuwe wijzigingen in de feed, nadat alle huidige wijzigingen zijn leeggezogen. De standaardwaarde is 5000 milliseconden of 5 seconden.
leaseAcquireInterval (Optioneel) Wanneer deze optie is ingesteld, definieert deze, in milliseconden, het interval voor het starten van een taak om te berekenen of partities gelijkmatig worden verdeeld over bekende hostinstanties. De standaardwaarde is 13000 (13 seconden).
leaseExpirationInterval (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het interval waarvoor de lease wordt genomen in een lease die een partitie vertegenwoordigt. Als de lease niet binnen dit interval wordt vernieuwd, wordt deze verlopen en wordt het eigendom van de partitie verplaatst naar een ander exemplaar. De standaardwaarde is 60000 (60 seconden).
leaseRenewInterval (Optioneel) Wanneer deze is ingesteld, definieert deze, in milliseconden, het vernieuwingsinterval voor alle leases voor partities die momenteel door een exemplaar worden bewaard. De standaardwaarde is 17000 (17 seconden).
maxItemsPerInvocation (Optioneel) Wanneer deze eigenschap is ingesteld, wordt het maximum aantal items ingesteld dat per functie-aanroep is ontvangen. Als bewerkingen in de bewaakte container worden uitgevoerd via opgeslagen procedures, blijft het transactiebereik behouden bij het lezen van items uit de wijzigingenfeed. Als gevolg hiervan kan het aantal ontvangen items hoger zijn dan de opgegeven waarde, zodat de items die door dezelfde transactie zijn gewijzigd, worden geretourneerd als onderdeel van één atomische batch.
startFromBeginning (Optioneel) Met deze optie wordt aan de trigger aangegeven dat wijzigingen vanaf het begin van de wijzigingsgeschiedenis van de container moeten worden gelezen in plaats van op het huidige tijdstip te beginnen. Lezen vanaf het begin werkt alleen wanneer de trigger voor het eerst wordt gestart, zoals in volgende uitvoeringen, de controlepunten al zijn opgeslagen. Het instellen van deze optie op true wanneer er al leases zijn gemaakt, heeft geen effect.
startFromTime (Optioneel) Hiermee haalt u de datum en tijd op van waaruit de leesbewerking van de wijzigingenfeed moet worden geïnitialiseerd. De aanbevolen indeling is ISO 8601 met de UTC-ontwerpaar, zoals 2021-02-16T14:19:29Z. Dit wordt alleen gebruikt om de eerste triggerstatus in te stellen. Nadat de trigger een leasestatus heeft, heeft het wijzigen van deze waarde geen effect.
preferredLocations (Optioneel) Definieert voorkeurslocaties (regio's) voor geo-gerepliceerde databaseaccounts in de Azure Cosmos DB-service. Waarden moeten door komma's worden gescheiden. Bijvoorbeeld 'VS - oost,VS - zuid-centraal,Europa - noord'.

Zie de sectie Voorbeeld voor volledige voorbeelden.

Gebruik

Voor de trigger is een tweede verzameling vereist die wordt gebruikt voor het opslaan van leases via de partities. Zowel de verzameling die wordt bewaakt als de verzameling die de leases bevat, moet beschikbaar zijn om de trigger te laten werken.

Belangrijk

Als meerdere functies zijn geconfigureerd voor het gebruik van een Azure Cosmos DB-trigger voor dezelfde verzameling, moet elk van de functies een toegewezen leaseverzameling gebruiken of een andere LeaseCollectionPrefix opgeven voor elke functie. Anders wordt slechts één van de functies geactiveerd. Zie de sectie Kenmerken voor meer informatie over het voorvoegsel.

Belangrijk

Als meerdere functies zijn geconfigureerd voor het gebruik van een Azure Cosmos DB-trigger voor dezelfde verzameling, moet elk van de functies een toegewezen leaseverzameling gebruiken of een andere leaseCollectionPrefix opgeven voor elke functie. Anders wordt slechts één van de functies geactiveerd. Zie de sectie Aantekeningen voor meer informatie over het voorvoegsel.

Belangrijk

Als meerdere functies zijn geconfigureerd voor het gebruik van een Azure Cosmos DB-trigger voor dezelfde verzameling, moet elk van de functies een toegewezen leaseverzameling gebruiken of een andere leaseCollectionPrefix opgeven voor elke functie. Anders wordt slechts één van de functies geactiveerd. Zie de sectie Configuratie voor meer informatie over het voorvoegsel.

De trigger geeft niet aan of een document is bijgewerkt of ingevoegd, maar alleen het document zelf. Als u updates en invoegingen anders moet afhandelen, kunt u dit doen door tijdstempelvelden te implementeren voor invoeging of bijwerken.

Het parametertype dat wordt ondersteund door de Azure Cosmos DB-trigger, is afhankelijk van de runtimeversie van Functions, de versie van het extensiepakket en de gebruikte C#-modaliteit.

Wanneer u wilt dat de functie één document verwerkt, kan de Cosmos DB-trigger worden gekoppeld aan de volgende typen:

Type Description
JSON serialiseerbare typen Functions probeert de JSON-gegevens van het document uit de Cosmos DB-wijzigingenfeed te deserialiseren naar een poCO-type (plain-old CLR object).

Wanneer u wilt dat de functie een batch documenten verwerkt, kan de Cosmos DB-trigger verbinding maken met de volgende typen:

Type Description
IEnumerable<T>waarbij T een type JSON serialiseerbaar is Een opsomming van entiteiten die zijn opgenomen in de batch. Elke vermelding vertegenwoordigt één document uit de Cosmos DB-wijzigingenfeed.

Connecties

De connectionStringSetting/connection en leaseConnectionStringSetting/leaseConnection eigenschappen zijn verwijzingen naar de omgevingsconfiguratie die aangeeft hoe de app verbinding moet maken met Azure Cosmos DB. Ze kunnen het volgende opgeven:

Als de geconfigureerde waarde zowel een exacte overeenkomst is voor één instelling als een voorvoegselovereenkomst voor andere instellingen, wordt de exacte overeenkomst gebruikt.

Connection string

De verbindingsreeks voor uw databaseaccount moet worden opgeslagen in een toepassingsinstelling met een naam die overeenkomt met de waarde die is opgegeven door de verbindingseigenschap van de bindingsconfiguratie.

Op identiteit gebaseerde verbindingen

Als u versie 4.x of hoger van de extensie gebruikt, in plaats van een verbindingsreeks met een geheim te gebruiken, kunt u de app een Microsoft Entra-identiteit laten gebruiken. Hiervoor definieert u instellingen onder een gemeenschappelijk voorvoegsel dat is toegewezen aan de verbindingseigenschap in de trigger- en bindingsconfiguratie.

In deze modus vereist de extensie de volgende eigenschappen:

Eigenschappen Sjabloon voor omgevingsvariabele Beschrijving Voorbeeldwaarde
Accounteindpunt <CONNECTION_NAME_PREFIX>__accountEndpoint De eindpunt-URI van het Azure Cosmos DB-account. <https:// database_account_name.documents.azure.com:443/>

Er kunnen extra eigenschappen worden ingesteld om de verbinding aan te passen. Zie Algemene eigenschappen voor op identiteit gebaseerde verbindingen.

Wanneer deze worden gehost in de Azure Functions-service, maken identiteitsverbindingen gebruik van een beheerde identiteit. De door het systeem toegewezen identiteit wordt standaard gebruikt, hoewel een door de gebruiker toegewezen identiteit kan worden opgegeven met de credential en clientID eigenschappen. Houd er rekening mee dat het configureren van een door de gebruiker toegewezen identiteit met een resource-id niet wordt ondersteund. Wanneer uw ontwikkelaarsidentiteit wordt uitgevoerd in andere contexten, zoals lokale ontwikkeling, wordt in plaats daarvan uw ontwikkelaarsidentiteit gebruikt, hoewel dit kan worden aangepast. Zie Lokale ontwikkeling met op identiteit gebaseerde verbindingen.

Toestemming verlenen aan de identiteit

Elke identiteit die wordt gebruikt, moet machtigingen hebben om de beoogde acties uit te voeren. Voor de meeste Azure-services betekent dit dat u een rol in Azure RBAC moet toewijzen met behulp van ingebouwde of aangepaste rollen die deze machtigingen bieden.

Belangrijk

Sommige machtigingen worden mogelijk weergegeven door de doelservice die niet nodig is voor alle contexten. Waar mogelijk moet u zich houden aan het principe van minimale bevoegdheid, waarbij de identiteit alleen vereiste bevoegdheden verleent. Als de app bijvoorbeeld alleen uit een gegevensbron moet kunnen lezen, gebruikt u een rol die alleen gemachtigd is om te lezen. Het zou ongepast zijn om een rol toe te wijzen die ook schrijfbewerkingen naar die service toestaat, omdat dit overmatige machtigingen zou zijn voor een leesbewerking. Op dezelfde manier wilt u ervoor zorgen dat de roltoewijzing alleen is afgestemd op de resources die moeten worden gelezen.

Cosmos DB maakt geen gebruik van Azure RBAC voor gegevensbewerkingen. In plaats daarvan wordt een ingebouwd RBAC-systeem van Cosmos DB gebruikt dat is gebaseerd op vergelijkbare concepten. U moet een roltoewijzing maken die tijdens runtime toegang biedt tot uw databaseaccount. Azure RBAC-beheerrollen zoals Eigenaar zijn niet voldoende. De volgende tabel bevat ingebouwde rollen die worden aanbevolen bij het gebruik van de Azure Cosmos DB-extensie in normale werking. Uw toepassing vereist mogelijk extra machtigingen op basis van de code die u schrijft.

Bindingstype Voorbeeld van ingebouwde rollen1
Trigger2 Inzender voor ingebouwde Cosmos DB-gegevens
Invoerbinding Ingebouwde gegevenslezer van Cosmos DB
Uitvoerbinding Inzender voor ingebouwde Cosmos DB-gegevens

1 Deze rollen kunnen niet worden gebruikt in een Azure RBAC-roltoewijzing. Raadpleeg de ingebouwde RBAC-systeemdocumentatie van Cosmos DB voor meer informatie over het toewijzen van deze rollen.

2 Wanneer u identiteit gebruikt, behandelt Cosmos DB het maken van containers als een beheerbewerking. Het is niet beschikbaar als een gegevensvlakbewerking voor de trigger. U moet ervoor zorgen dat u de containers maakt die nodig zijn voor de trigger (inclusief de leasecontainer) voordat u uw functie instelt.

Volgende stappen