Trigger služby Azure Cosmos DB pro Azure Functions 2.x a vyšší

Trigger služby Azure Cosmos DB používá kanál změn služby Azure Cosmos DB k naslouchání vkládání a aktualizací mezi oddíly. Kanál změn publikuje nové a aktualizované položky, které neobsahují aktualizace z odstranění.

Informace o nastavení a konfiguraci najdete v přehledu.

Rozhodnutí o škálování služby Cosmos DB pro plány Consumption a Premium se provádějí prostřednictvím cílového škálování. Další informace najdete v tématu Škálování na základě cíle.

Důležité

Tento článek používá karty pro podporu více verzí programovacího modelu Node.js. Model v4 je obecně dostupný a je navržený tak, aby měl flexibilnější a intuitivnější prostředí pro vývojáře v JavaScriptu a TypeScriptu. Další podrobnosti o tom, jak model v4 funguje, najdete v příručce pro vývojáře služby Azure Functions Node.js. Další informace o rozdílech mezi v3 a v4 najdete v průvodci migrací.

Azure Functions podporuje dva programovací modely pro Python. Způsob, jakým definujete vazby, závisí na zvoleném programovacím modelu.

Programovací model Pythonu v2 umožňuje definovat vazby pomocí dekorátorů přímo v kódu funkce Pythonu. Další informace najdete v příručce pro vývojáře Pythonu.

Tento článek podporuje oba programovací modely.

Příklad

Použití triggeru závisí na verzi balíčku rozšíření a způsobu použití jazyka C# ve vaší aplikaci funkcí, což může být jedna z následujících možností:

Kompilovaná funkce C# v izolované knihovně tříd pracovních procesů běží v procesu izolovaném od modulu runtime.

Následující příklady závisí na verzi rozšíření pro daný režim jazyka C#.

Tento příklad odkazuje na jednoduchý ToDoItem typ:

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

Následující funkce se vyvolá při vkládání nebo aktualizacích v zadané databázi a kolekci.

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

Tato funkce se vyvolá, když se v zadané databázi a kontejneru vloží nebo aktualizuje.

Kvůli změnám schématu v sadě Sdk služby Azure Cosmos DB vyžaduje rozšíření Azure Cosmos DB verze 4.x azure-functions-java-library verze 3.0.0 pro funkce 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());
    }

V knihovně modulu runtime funkcí Java použijte poznámku @CosmosDBTrigger k parametrům, jejichž hodnota pochází ze služby Azure Cosmos DB. Tuto poznámku lze použít s nativními typy Javy, POJOs nebo hodnotami null s použitím Optional<T>.

Následující příklad ukazuje funkci TypeScript triggeru služby Azure Cosmos DB. Funkce zapisuje zprávy protokolu při přidání nebo úpravě záznamů služby Azure Cosmos DB.

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

Následující příklad ukazuje funkci JavaScriptu triggeru služby Azure Cosmos DB. Funkce zapisuje zprávy protokolu při přidání nebo úpravě záznamů služby Azure Cosmos DB.

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

Následující příklad ukazuje, jak spustit funkci jako změny dat ve službě Azure Cosmos DB.

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

Všimněte si, že některé názvy atributů vazby se změnily ve verzi 4.x rozšíření Azure Cosmos DB.

V souboru run.ps1 máte přístup k dokumentu, který funkci aktivuje prostřednictvím parametru$Documents.

param($Documents, $TriggerMetadata) 

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

Následující příklad ukazuje vazbu triggeru služby Azure Cosmos DB. Tento příklad závisí na tom, jestli používáte programovací model v1 nebo v2 Pythonu.

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

Atributy

Knihovny C# v procesu i izolovaného procesu používají k definování funkce cosmosDBTriggerAttribute . Skript jazyka C# místo toho používá konfigurační soubor function.json, jak je popsáno v průvodci skriptováním jazyka C#.

Vlastnost atributu Popis
Připojení Název nastavení aplikace nebo kolekce nastavení, která určuje, jak se připojit k monitorovanému účtu služby Azure Cosmos DB. Další informace najdete v tématu Připojení iony.
Databasename Název databáze Azure Cosmos DB s monitorovaným kontejnerem.
Název kontejneru Název monitorovaného kontejneru.
Zapůjčení Připojení (Volitelné) Název nastavení aplikace nebo kolekce nastavení, která určuje, jak se připojit k účtu služby Azure Cosmos DB, který obsahuje kontejner zapůjčení.

Pokud není nastavená, použije se Connection hodnota. Tento parametr se automaticky nastaví při vytvoření vazby na portálu. Kontejner zapůjčení připojovací řetězec musí mít oprávnění k zápisu.
LeaseDatabaseName (Volitelné) Název databáze, která obsahuje kontejner použitý k ukládání zapůjčení. Pokud nastavení nenastavíte, použije se hodnota databaseName tohoto nastavení.
LeaseContainerName (Volitelné) Název kontejneru použitého k ukládání zapůjčení. Pokud není nastavená, použije se hodnota leases .
CreateLeaseContainerIfNotExists (Volitelné) Pokud je nastavená hodnota true, kontejner zapůjčení se automaticky vytvoří, když ještě neexistuje. Výchozí hodnota je false. Pokud použijete identity Microsoft Entra, pokud nastavíte hodnotu na true, vytváření kontejnerů není povolená operace a vaše funkce nebude moci spustit.
LeasesContainerThroughput (Volitelné) Definuje počet jednotek žádostí, které se mají přiřadit při vytvoření kontejneru zapůjčení. Toto nastavení se používá pouze v případě, že CreateLeaseContainerIfNotExists je nastavena hodnota true. Tento parametr se automaticky nastaví při vytvoření vazby pomocí portálu.
LeaseContainerPrefix (Volitelné) Při nastavení se hodnota přidá jako předpona zapůjčení vytvořeným v kontejneru Zapůjčení pro tuto funkci. Použití předpony umožňuje dvěma samostatným funkcím Azure Functions sdílet stejný kontejner zapůjčení pomocí různých předpon.
FeedPollDelay (Volitelné) Čas (v milisekundách) zpoždění mezi dotazováním oddílu na nové změny v informačním kanálu po vyprázdnění všech aktuálních změn. Výchozí hodnota je 5 000 milisekund nebo 5 sekund.
LeaseAcquireInterval (Volitelné) Když nastavíte, definuje interval v milisekundách, aby se úloha vypočítala, pokud se oddíly rovnoměrně distribuují mezi známé instance hostitele. Výchozí hodnota je 13000 (13 sekund).
LeaseExpirationInterval (Volitelné) Při nastavení definuje v milisekundách interval, pro který se zapůjčení převezme na zapůjčení představující oddíl. Pokud se zapůjčení neprodloužilo v tomto intervalu, způsobí to vypršení platnosti oddílu a vlastnictví oddílu se přesune do jiné instance. Výchozí hodnota je 60000 (60 sekund).
LeaseRenewInterval (Volitelné) Při nastavení definuje interval obnovení pro všechna zapůjčení oddílů, které jsou aktuálně uloženy instancí, v milisekundách. Výchozí hodnota je 17000 (17 sekund).
MaxItemsPerInvocation (Volitelné) Při nastavení nastaví tato vlastnost maximální počet položek přijatých na volání funkce. Pokud se operace v monitorovaném kontejneru provádějí prostřednictvím uložených procedur, při čtení položek z kanálu změn se obor transakcí zachovají. V důsledku toho může být počet přijatých položek vyšší než zadaná hodnota, aby položky změněné stejnou transakcí byly vráceny jako součást jedné atomické dávky.
StartFromBeginning (Volitelné) Tato možnost dává triggeru pokyn ke čtení změn od začátku historie změn kontejneru, nikoli od aktuálního času. Čtení od začátku funguje jenom při prvním spuštění triggeru, protože v následných spuštěních jsou kontrolní body už uložené. Nastavení této možnosti na to, že true již vytvořené zapůjčení nemá žádný vliv.
StartFromTime (Volitelné) Získá nebo nastaví datum a čas, ze kterého se má inicializovat operace čtení kanálu změn. Doporučený formát je ISO 8601 s designátorem UTC, například 2021-02-16T14:19:29Z. Slouží pouze k nastavení počátečního stavu triggeru. Jakmile má trigger stav zapůjčení, změna této hodnoty nemá žádný vliv.
PreferredLocations (Volitelné) Definuje upřednostňovaná umístění (oblasti) pro geograficky replikované databázové účty ve službě Azure Cosmos DB. Hodnoty by měly být oddělené čárkami. Například USA – východ, USA – středojiž, Severní Evropa.

Dekoratéry

Platí pouze pro programovací model Pythonu v2.

Pro funkce Pythonu v2 definované pomocí dekorátoru následující vlastnosti:cosmos_db_trigger

Vlastnost Popis
arg_name Název proměnné použitý v kódu funkce, který představuje seznam dokumentů se změnami.
database_name Název databáze Azure Cosmos DB s monitorovanou kolekcí.
collection_name Název monitorované kolekce Azure Cosmos DB.
connection Monitorovaná připojovací řetězec služby Azure Cosmos DB.

Informace o funkcích Pythonu definovaných pomocí function.json najdete v části Konfigurace .

Poznámky

Kvůli změnám schématu v sadě Sdk služby Azure Cosmos DB vyžaduje rozšíření Azure Cosmos DB verze 4.x azure-functions-java-library verze 3.0.0 pro funkce Java.

Použijte poznámku k parametrům, které čtou @CosmosDBTrigger data ze služby Azure Cosmos DB. Poznámka podporuje následující vlastnosti:

Vlastnost atributu Popis
Připojení Název nastavení aplikace nebo kolekce nastavení, která určuje, jak se připojit k monitorovanému účtu služby Azure Cosmos DB. Další informace najdete v tématu Připojení iony.
Jméno Název funkce.
Databasename Název databáze Azure Cosmos DB s monitorovaným kontejnerem.
containerName Název monitorovaného kontejneru.
zapůjčení Připojení ionStringSetting (Volitelné) Název nastavení aplikace nebo kolekce nastavení, která určuje, jak se připojit k účtu služby Azure Cosmos DB, který obsahuje kontejner zapůjčení.

Pokud není nastavená, použije se Connection hodnota. Tento parametr se automaticky nastaví při vytvoření vazby na portálu. Kontejner zapůjčení připojovací řetězec musí mít oprávnění k zápisu.
leaseDatabaseName (Volitelné) Název databáze, která obsahuje kontejner použitý k ukládání zapůjčení. Pokud nastavení nenastavíte, použije se hodnota databaseName tohoto nastavení.
leaseContainerName (Volitelné) Název kontejneru použitého k ukládání zapůjčení. Pokud není nastavená, použije se hodnota leases .
createLeaseContainerIfNotExists (Volitelné) Pokud je nastavená hodnota true, kontejner zapůjčení se automaticky vytvoří, když ještě neexistuje. Výchozí hodnota je false. Pokud použijete identity Microsoft Entra, pokud nastavíte hodnotu na true, vytvoření kontejnerů není povolená operace a vaše funkce se nespustí.
leasesContainerThroughput (Volitelné) Definuje počet jednotek žádostí, které se mají přiřadit při vytvoření kontejneru zapůjčení. Toto nastavení se používá pouze v případě, že CreateLeaseContainerIfNotExists je nastavena hodnota true. Tento parametr se automaticky nastaví při vytvoření vazby pomocí portálu.
leaseContainerPrefix (Volitelné) Při nastavení se hodnota přidá jako předpona zapůjčení vytvořeným v kontejneru Zapůjčení pro tuto funkci. Použití předpony umožňuje dvěma samostatným funkcím Azure Functions sdílet stejný kontejner zapůjčení pomocí různých předpon.
feedPollDelay (Volitelné) Čas (v milisekundách) zpoždění mezi dotazováním oddílu na nové změny v informačním kanálu po vyprázdnění všech aktuálních změn. Výchozí hodnota je 5 000 milisekund nebo 5 sekund.
leaseAcquireInterval (Volitelné) Když nastavíte, definuje interval v milisekundách, aby se úloha vypočítala, pokud se oddíly rovnoměrně distribuují mezi známé instance hostitele. Výchozí hodnota je 13000 (13 sekund).
leaseExpirationInterval (Volitelné) Při nastavení definuje v milisekundách interval, pro který se zapůjčení převezme na zapůjčení představující oddíl. Pokud se zapůjčení v tomto intervalu neprodlouží, platnost oddílu vyprší a vlastnictví oddílu se přesune do jiné instance. Výchozí hodnota je 60000 (60 sekund).
leaseRenewInterval (Volitelné) Při nastavení definuje interval obnovení pro všechna zapůjčení oddílů, které jsou aktuálně uloženy instancí, v milisekundách. Výchozí hodnota je 17000 (17 sekund).
maxItemsPerInvocation (Volitelné) Při nastavení nastaví tato vlastnost maximální počet položek přijatých na volání funkce. Pokud se operace v monitorovaném kontejneru provádějí prostřednictvím uložených procedur, při čtení položek z kanálu změn se obor transakcí zachovají. V důsledku toho může být počet přijatých položek vyšší než zadaná hodnota, aby položky změněné stejnou transakcí byly vráceny jako součást jedné atomické dávky.
startFromBeginning (Volitelné) Tato možnost dává triggeru pokyn ke čtení změn od začátku historie změn kontejneru, nikoli od aktuálního času. Čtení od začátku funguje jenom při prvním spuštění triggeru, protože v následných spuštěních jsou kontrolní body už uložené. Nastavení této možnosti na to, že true již vytvořené zapůjčení nemá žádný vliv.
preferredLocations (Volitelné) Definuje upřednostňovaná umístění (oblasti) pro geograficky replikované databázové účty ve službě Azure Cosmos DB. Hodnoty by měly být oddělené čárkami. Například USA – východ, USA – středojiž, Severní Evropa.

Konfigurace

Platí pouze pro programovací model Pythonu v1.

Následující tabulka vysvětluje vlastnosti, které můžete nastavit u objektu předaného options metodě app.cosmosDB() . Funkce type, directiona name vlastnosti se nevztahují na model v4.

Následující tabulka vysvětluje vlastnosti konfigurace vazby, které jste nastavili v souboru function.json , kde se vlastnosti liší podle verze rozšíření:

vlastnost function.json Popis
type Musí být nastavena na cosmosDBTriggerhodnotu .
direction Musí být nastavena na inhodnotu . Tento parametr se nastaví automaticky při vytváření triggeru na webu Azure Portal.
Jméno Název proměnné použitý v kódu funkce, který představuje seznam dokumentů se změnami.
Připojení Název nastavení aplikace nebo kolekce nastavení, která určuje, jak se připojit k monitorovanému účtu služby Azure Cosmos DB. Další informace najdete v tématu Připojení iony.
Databasename Název databáze Azure Cosmos DB s monitorovaným kontejnerem.
containerName Název monitorovaného kontejneru.
zapůjčení Připojení ion (Volitelné) Název nastavení aplikace nebo nastavení kontejneru, který určuje, jak se připojit k účtu služby Azure Cosmos DB, který obsahuje kontejner zapůjčení.

Pokud není nastavená, použije se connection hodnota. Tento parametr se automaticky nastaví při vytvoření vazby na portálu. Kontejner zapůjčení připojovací řetězec musí mít oprávnění k zápisu.
leaseDatabaseName (Volitelné) Název databáze, která obsahuje kontejner použitý k ukládání zapůjčení. Pokud nastavení nenastavíte, použije se hodnota databaseName tohoto nastavení.
leaseContainerName (Volitelné) Název kontejneru použitého k ukládání zapůjčení. Pokud není nastavená, použije se hodnota leases .
createLeaseContainerIfNotExists (Volitelné) Pokud je nastavená hodnota true, kontejner zapůjčení se automaticky vytvoří, když ještě neexistuje. Výchozí hodnota je false. Pokud použijete identity Microsoft Entra, pokud nastavíte hodnotu na true, vytváření kontejnerů není povolená operace a vaše funkce nebude moci spustit.
leasesContainerThroughput (Volitelné) Definuje počet jednotek žádostí, které se mají přiřadit při vytvoření kontejneru zapůjčení. Toto nastavení se používá pouze v případě, že createLeaseContainerIfNotExists je nastavena hodnota true. Tento parametr se automaticky nastaví při vytvoření vazby pomocí portálu.
leaseContainerPrefix (Volitelné) Při nastavení se hodnota přidá jako předpona zapůjčení vytvořeným v kontejneru Zapůjčení pro tuto funkci. Použití předpony umožňuje dvěma samostatným funkcím Azure Functions sdílet stejný kontejner zapůjčení pomocí různých předpon.
feedPollDelay (Volitelné) Čas (v milisekundách) zpoždění mezi dotazováním oddílu na nové změny v informačním kanálu po vyprázdnění všech aktuálních změn. Výchozí hodnota je 5 000 milisekund nebo 5 sekund.
leaseAcquireInterval (Volitelné) Když nastavíte, definuje interval v milisekundách, aby se úloha vypočítala, pokud se oddíly rovnoměrně distribuují mezi známé instance hostitele. Výchozí hodnota je 13000 (13 sekund).
leaseExpirationInterval (Volitelné) Při nastavení definuje v milisekundách interval, pro který se zapůjčení převezme na zapůjčení představující oddíl. Pokud se zapůjčení neprodloužilo v tomto intervalu, způsobí to vypršení platnosti oddílu a vlastnictví oddílu se přesune do jiné instance. Výchozí hodnota je 60000 (60 sekund).
leaseRenewInterval (Volitelné) Při nastavení definuje interval obnovení pro všechna zapůjčení oddílů, které jsou aktuálně uloženy instancí, v milisekundách. Výchozí hodnota je 17000 (17 sekund).
maxItemsPerInvocation (Volitelné) Při nastavení nastaví tato vlastnost maximální počet položek přijatých na volání funkce. Pokud se operace v monitorovaném kontejneru provádějí prostřednictvím uložených procedur, při čtení položek z kanálu změn se obor transakcí zachovají. V důsledku toho může být počet přijatých položek vyšší než zadaná hodnota, aby položky změněné stejnou transakcí byly vráceny jako součást jedné atomické dávky.
startFromBeginning (Volitelné) Tato možnost dává triggeru pokyn ke čtení změn od začátku historie změn kontejneru, nikoli od aktuálního času. Čtení od začátku funguje jenom při prvním spuštění triggeru, protože v následných spuštěních jsou kontrolní body už uložené. Nastavení této možnosti na to, že true již vytvořené zapůjčení nemá žádný vliv.
startFromTime (Volitelné) Získá nebo nastaví datum a čas, ze kterého se má inicializovat operace čtení kanálu změn. Doporučený formát je ISO 8601 s designátorem UTC, například 2021-02-16T14:19:29Z. Slouží pouze k nastavení počátečního stavu triggeru. Jakmile má trigger stav zapůjčení, změna této hodnoty nemá žádný vliv.
preferredLocations (Volitelné) Definuje upřednostňovaná umístění (oblasti) pro geograficky replikované databázové účty ve službě Azure Cosmos DB. Hodnoty by měly být oddělené čárkami. Například USA – východ, USA – středojiž, Severní Evropa.

Kompletní příklady najdete v části Příklad.

Využití

Trigger vyžaduje druhou kolekci, kterou používá k ukládání zapůjčení oddílů. Monitorovaná kolekce i kolekce, která obsahuje zapůjčení, musí být k dispozici, aby trigger fungoval.

Důležité

Pokud je pro stejnou kolekci nakonfigurovaných více funkcí, aby používaly trigger služby Azure Cosmos DB, měly by všechny funkce používat vyhrazenou kolekci zapůjčení nebo pro každou funkci zadat jinou LeaseCollectionPrefix . V opačném případě se aktivuje jenom jedna z funkcí. Informace o předponě najdete v části Atributy.

Důležité

Pokud je pro stejnou kolekci nakonfigurovaných více funkcí, aby používaly trigger služby Azure Cosmos DB, měly by všechny funkce používat vyhrazenou kolekci zapůjčení nebo pro každou funkci zadat jinou leaseCollectionPrefix . V opačném případě se aktivuje jenom jedna z funkcí. Informace o předponě najdete v části Poznámky.

Důležité

Pokud je pro stejnou kolekci nakonfigurovaných více funkcí, aby používaly trigger služby Azure Cosmos DB, měly by všechny funkce používat vyhrazenou kolekci zapůjčení nebo pro každou funkci zadat jinou leaseCollectionPrefix . V opačném případě se aktivuje jenom jedna z funkcí. Informace o předponě najdete v části Konfigurace.

Trigger neuvádí, jestli byl dokument aktualizován nebo vložen, jenom poskytuje samotný dokument. Pokud potřebujete zpracovat aktualizace a vložit jinak, můžete to udělat implementací polí časového razítka pro vložení nebo aktualizaci.

Typ parametru podporovaný triggerem služby Azure Cosmos DB závisí na verzi modulu runtime služby Functions, verzi balíčku rozšíření a použitém způsobu použití jazyka C#.

Pokud chcete, aby funkce zpracovávala jeden dokument, trigger Cosmos DB může svázat s následujícími typy:

Typ Popis
Serializovatelné typy JSON Funkce se snaží deserializovat data JSON dokumentu z kanálu změn Cosmos DB do prostého typu objektu CLR (POCO).

Pokud chcete, aby funkce zpracovávala dávku dokumentů, trigger Cosmos DB může svázat s následujícími typy:

Typ Popis
IEnumerable<T>where T je serializovatelný typ JSON Výčet entit zahrnutých v dávce. Každá položka představuje jeden dokument z kanálu změn Cosmos DB.

Propojení

leaseConnectionleaseConnectionStringSetting/Vlastnosti connectionStringSetting/connection jsou odkazy na konfiguraci prostředí, která určuje, jak se má aplikace připojit ke službě Azure Cosmos DB. Můžou zadat:

Pokud je nakonfigurovaná hodnota přesná shoda pro jedno nastavení i shodu předpony pro jiná nastavení, použije se přesná shoda.

Connection string

Připojovací řetězec pro váš databázový účet by měl být uložen v nastavení aplikace s názvem, který odpovídá hodnotě určené vlastností připojení konfigurace vazby.

Připojení založená na identitách

Pokud používáte rozšíření verze 4.x nebo vyšší, můžete místo použití připojovací řetězec s tajným kódem použít aplikaci identitu Microsoft Entra. Uděláte to tak, že nastavení definujete pod společnou předponou, která je v konfiguraci triggeru a vazeb namapovaná na vlastnost připojení.

V tomto režimu rozšíření vyžaduje následující vlastnosti:

Vlastnost Šablona proměnné prostředí Popis Příklad hodnoty
Koncový bod účtu <CONNECTION_NAME_PREFIX>__accountEndpoint Identifikátor URI koncového bodu účtu služby Azure Cosmos DB. <https:// database_account_name.documents.azure.com:443/>

Pro přizpůsobení připojení je možné nastavit další vlastnosti. Viz Běžné vlastnosti pro připojení založená na identitě.

Při hostovaní ve službě Azure Functions používají připojení založená na identitách spravovanou identitu. Identita přiřazená systémem se používá ve výchozím nastavení, i když je možné zadat identitu přiřazenou uživatelem s vlastnostmi a clientID vlastnostmicredential. Všimněte si, že konfigurace identity přiřazené uživatelem s ID prostředku se nepodporuje . Při spuštění v jiných kontextech, jako je místní vývoj, se místo toho použije vaše identita vývojáře, i když je možné ji přizpůsobit. Viz Místní vývoj s připojeními založenými na identitách.

Udělení oprávnění identitě

Jakákoli identita, kterou používáte, musí mít oprávnění k provedení zamýšlených akcí. U většiny služeb Azure to znamená, že potřebujete přiřadit roli v Azure RBAC pomocí předdefinovaných nebo vlastních rolí, které tato oprávnění poskytují.

Důležité

Cílová služba může zpřístupnit některá oprávnění, která nejsou nutná pro všechny kontexty. Pokud je to možné, dodržujte zásadu nejnižšího oprávnění a udělte identitě pouze požadovaná oprávnění. Pokud například aplikace potřebuje jen číst ze zdroje dat, použijte roli, která má oprávnění jen ke čtení. Přiřazení role, která také umožňuje zápis do této služby, by bylo nevhodné, protože by to bylo nadměrné oprávnění pro operaci čtení. Podobně byste chtěli zajistit, aby přiřazení role bylo vymezeno pouze nad prostředky, které je potřeba číst.

Cosmos DB nepoužívá Azure RBAC pro operace s daty. Místo toho používá integrovaný systém RBAC služby Cosmos DB, který je založený na podobných konceptech. Budete muset vytvořit přiřazení role, které poskytuje přístup k vašemu databázovému účtu za běhu. Role správy Azure RBAC, jako je vlastník , nestačí. Následující tabulka ukazuje předdefinované role, které se doporučují při použití rozšíření Azure Cosmos DB v normálním provozu. Vaše aplikace může vyžadovat další oprávnění na základě kódu, který napíšete.

Typ vazby Příklad předdefinovaných rolí1
Aktivační událost2 Integrovaný přispěvatel dat ve službě Cosmos DB
Vstupní vazba Integrovaná čtečka dat ve službě Cosmos DB
Výstupní vazba Integrovaný přispěvatel dat ve službě Cosmos DB

1 Tyto role nelze použít v přiřazení role Azure RBAC. Podrobnosti o přiřazování těchto rolí najdete v integrované dokumentaci k systému RBAC služby Cosmos DB.

2 Při použití identity služba Cosmos DB považuje vytvoření kontejneru za operaci správy. Není k dispozici jako operace roviny dat pro trigger. Před nastavením funkce budete muset zajistit, abyste vytvořili kontejnery potřebné triggerem (včetně kontejneru zapůjčení).

Další kroky