Azure Cosmos DB-utlösare för Azure Functions 2.x och senare
Azure Cosmos DB-utlösaren använder Azure Cosmos DB-ändringsflödet för att lyssna efter infogningar och uppdateringar mellan partitioner. Ändringsflödet publicerar nya och uppdaterade objekt, inte uppdateringar från borttagningar.
Information om konfiguration och konfigurationsinformation finns i översikten.
Cosmos DB-skalningsbeslut för förbruknings- och Premium-abonnemangen görs via målbaserad skalning. Mer information finns i Målbaserad skalning.
Viktigt!
Den här artikeln använder flikar för att stödja flera versioner av Node.js programmeringsmodellen. V4-modellen är allmänt tillgänglig och är utformad för att ha en mer flexibel och intuitiv upplevelse för JavaScript- och TypeScript-utvecklare. Mer information om hur v4-modellen fungerar finns i utvecklarguiden för Azure Functions Node.js. Mer information om skillnaderna mellan v3 och v4 finns i migreringsguiden.
Azure Functions stöder två programmeringsmodeller för Python. Hur du definierar dina bindningar beror på din valda programmeringsmodell.
Med programmeringsmodellen Python v2 kan du definiera bindningar med hjälp av dekoratörer direkt i python-funktionskoden. Mer information finns i utvecklarguiden för Python.
Den här artikeln stöder båda programmeringsmodellerna.
Exempel
Användningen av utlösaren beror på tilläggspaketversionen och den C#-modalitet som används i funktionsappen, vilket kan vara något av följande:
Ett isolerat arbetsprocessklassbibliotek kompilerade C#-funktioner körs i en process som är isolerad från körningen.
Följande exempel beror på tilläggsversionen för det angivna C#-läget.
Det här exemplet refererar till en enkel ToDoItem
typ:
public class ToDoItem
{
public string? Id { get; set; }
public string? Description { get; set; }
}
Följande funktion anropas när det finns infogningar eller uppdateringar i den angivna databasen och samlingen.
[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);
}
}
}
Den här funktionen anropas när det finns infogningar eller uppdateringar i den angivna databasen och containern.
På grund av schemaändringar i Azure Cosmos DB SDK kräver version 4.x av Azure Cosmos DB-tillägget azure-functions-java-library V3.0.0 för Java-funktioner.
@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());
}
I Java Functions-körningsbiblioteket använder du anteckningen @CosmosDBTrigger
för parametrar vars värde skulle komma från Azure Cosmos DB. Den här anteckningen kan användas med interna Java-typer, POJO:er eller null-värden med hjälp av Optional<T>
.
I följande exempel visas en TypeScript-funktion för Azure Cosmos DB-utlösare. Funktionen skriver loggmeddelanden när Azure Cosmos DB-poster läggs till eller ändras.
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,
});
I följande exempel visas en JavaScript-funktion för Azure Cosmos DB-utlösare. Funktionen skriver loggmeddelanden när Azure Cosmos DB-poster läggs till eller ändras.
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`);
},
});
I följande exempel visas hur du kör en funktion när data ändras i Azure Cosmos DB.
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "<connection-app-setting>",
"databaseName": "Tasks",
"collectionName": "Items",
"createLeaseCollectionIfNotExists": true
}
Observera att några av namnen på bindningsattributet har ändrats i version 4.x av Azure Cosmos DB-tillägget.
I filen run.ps1 har du åtkomst till dokumentet som utlöser funktionen via parametern $Documents
.
param($Documents, $TriggerMetadata)
Write-Host "First document Id modified : $($Documents[0].id)"
I följande exempel visas en Azure Cosmos DB-utlösarbindning. Exemplet beror på om du använder python-programmeringsmodellen v1 eller 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'])
Attribut
Både processbaserade och isolerade C#-bibliotek använder CosmosDBTriggerAttribute för att definiera funktionen. C#-skriptet använder i stället en function.json konfigurationsfil enligt beskrivningen i C#-skriptguiden.
Attributegenskap | beskrivning |
---|---|
Anslutning | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till det Azure Cosmos DB-konto som övervakas. Mer information finns i Anslutningar. |
DatabaseName | Namnet på Azure Cosmos DB-databasen med containern som övervakas. |
ContainerName | Namnet på containern som övervakas. |
LeaseConnection | (Valfritt) Namnet på en appinställning eller inställningssamling som anger hur du ansluter till det Azure Cosmos DB-konto som innehåller lånecontainern. När värdet inte har angetts används det Connection . Den här parametern anges automatiskt när bindningen skapas i portalen. Niska veze för lånecontainern måste ha skrivbehörighet. |
LeaseDatabaseName | (Valfritt) Namnet på databasen som innehåller containern som används för att lagra lån. När inställningen inte har angetts används värdet för inställningen databaseName . |
LeaseContainerName | (Valfritt) Namnet på containern som används för att lagra lån. När värdet inte har angetts används det leases . |
CreateLeaseContainerIfNotExists | (Valfritt) När den är inställd true på skapas lånecontainern automatiskt när den inte redan finns. Standardvärdet är false . När du använder Microsoft Entra-identiteter om du anger värdet till är det inte tillåtet att true skapa containrar och funktionen kan inte starta. |
LeasesContainerThroughput | (Valfritt) Definierar antalet enheter för begäranden som ska tilldelas när lånecontainern skapas. Den här inställningen används endast när CreateLeaseContainerIfNotExists är inställd på true . Den här parametern anges automatiskt när bindningen skapas med hjälp av portalen. |
LeaseContainerPrefix | (Valfritt) När värdet anges läggs det till som ett prefix till lånen som skapats i lånecontainern för den här funktionen. Med hjälp av ett prefix kan två separata Azure Functions dela samma lånecontainer med hjälp av olika prefix. |
FeedPollDelay | (Valfritt) Tiden (i millisekunder) för fördröjningen mellan avsökningen av en partition för nya ändringar i flödet, när alla aktuella ändringar har tömts. Standardvärdet är 5 000 millisekunder eller 5 sekunder. |
LeaseAcquireInterval | (Valfritt) När den anges definierar den i millisekunder intervallet för att starta en uppgift för att beräkna om partitioner fördelas jämnt mellan kända värdinstanser. Standardvärdet är 13 000 (13 sekunder). |
LeaseExpirationInterval | (Valfritt) När den anges definierar den i millisekunder det intervall för vilket lånet tas på ett lån som representerar en partition. Om lånet inte förnyas inom det här intervallet upphör det att gälla och ägarskapet för partitionen flyttas till en annan instans. Standardvärdet är 60000 (60 sekunder). |
LeaseRenewInterval | (Valfritt) När den anges definierar den, i millisekunder, förnyelseintervallet för alla lån för partitioner som för närvarande innehas av en instans. Standardvärdet är 17 000 (17 sekunder). |
MaxItemsPerInvocation | (Valfritt) När den här egenskapen anges anger den maximala antalet objekt som tas emot per funktionsanrop. Om åtgärder i den övervakade containern utförs via lagrade procedurer bevaras transaktionsomfånget vid läsning av objekt från ändringsflödet. Därför kan antalet mottagna objekt vara högre än det angivna värdet så att objekten som ändras av samma transaktion returneras som en del av en atomisk batch. |
StartFromBeginning | (Valfritt) Det här alternativet instruerar utlösaren att läsa ändringar från början av containerns ändringshistorik i stället för att starta vid den aktuella tidpunkten. Läsning från början fungerar bara första gången utlösaren startar, eftersom kontrollpunkterna redan lagras i efterföljande körningar. Om du anger det här alternativet till true när lån som redan har skapats inte har någon effekt. |
StartFromTime | (Valfritt) Hämtar eller anger datum och tid från vilken ändringsflödesläsningen ska initieras. Det rekommenderade formatet är ISO 8601 med UTC-designatorn, till exempel 2021-02-16T14:19:29Z . Detta används endast för att ange det inledande utlösartillståndet. När utlösaren har ett lånetillstånd har det ingen effekt att ändra det här värdet. |
PreferredLocations | (Valfritt) Definierar önskade platser (regioner) för geo-replikerade databaskonton i Azure Cosmos DB-tjänsten. Värden bör kommaavgränsas. Till exempel "USA, östra, USA, södra centrala, Europa, norra". |
Dekoratörer
Gäller endast för python v2-programmeringsmodellen.
För Python v2-funktioner som definierats med hjälp av en dekoratör, följande egenskaper på cosmos_db_trigger
:
Property | beskrivning |
---|---|
arg_name |
Variabelnamnet som används i funktionskoden som representerar listan över dokument med ändringar. |
database_name |
Namnet på Azure Cosmos DB-databasen med samlingen som övervakas. |
collection_name |
Namnet på Den Azure Cosmos DB-samling som övervakas. |
connection |
Den niska veze för Azure Cosmos DB som övervakas. |
Information om Python-funktioner som definierats med hjälp av function.json finns i avsnittet Konfiguration .
Kommentarer
På grund av schemaändringar i Azure Cosmos DB SDK kräver version 4.x av Azure Cosmos DB-tillägget azure-functions-java-library V3.0.0 för Java-funktioner.
Använd anteckningen @CosmosDBTrigger
för parametrar som läser data från Azure Cosmos DB. Kommentaren stöder följande egenskaper:
Attributegenskap | beskrivning |
---|---|
samband | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till det Azure Cosmos DB-konto som övervakas. Mer information finns i Anslutningar. |
Namn | Namnet på funktionen. |
databaseName | Namnet på Azure Cosmos DB-databasen med containern som övervakas. |
containerName | Namnet på containern som övervakas. |
leaseConnectionStringSetting | (Valfritt) Namnet på en appinställning eller inställningssamling som anger hur du ansluter till det Azure Cosmos DB-konto som innehåller lånecontainern. När värdet inte har angetts används det Connection . Den här parametern anges automatiskt när bindningen skapas i portalen. Niska veze för lånecontainern måste ha skrivbehörighet. |
leaseDatabaseName | (Valfritt) Namnet på databasen som innehåller containern som används för att lagra lån. När inställningen inte har angetts används värdet för inställningen databaseName . |
leaseContainerName | (Valfritt) Namnet på containern som används för att lagra lån. När värdet inte har angetts används det leases . |
createLeaseContainerIfNotExists | (Valfritt) När den är inställd true på skapas lånecontainern automatiskt när den inte redan finns. Standardvärdet är false . När du använder Microsoft Entra-identiteter om du anger värdet till är det inte tillåtet att true skapa containrar och funktionen startar inte. |
leasesContainerThroughput | (Valfritt) Definierar antalet enheter för begäranden som ska tilldelas när lånecontainern skapas. Den här inställningen används endast när CreateLeaseContainerIfNotExists är inställd på true . Den här parametern anges automatiskt när bindningen skapas med hjälp av portalen. |
leaseContainerPrefix | (Valfritt) När värdet anges läggs det till som ett prefix till lånen som skapats i lånecontainern för den här funktionen. Med hjälp av ett prefix kan två separata Azure Functions dela samma lånecontainer med hjälp av olika prefix. |
feedPollDelay | (Valfritt) Tiden (i millisekunder) för fördröjningen mellan avsökningen av en partition för nya ändringar i flödet, när alla aktuella ändringar har tömts. Standardvärdet är 5 000 millisekunder eller 5 sekunder. |
leaseAcquireInterval | (Valfritt) När den anges definierar den i millisekunder intervallet för att starta en uppgift för att beräkna om partitioner fördelas jämnt mellan kända värdinstanser. Standardvärdet är 13 000 (13 sekunder). |
leaseExpirationInterval | (Valfritt) När den anges definierar den i millisekunder det intervall för vilket lånet tas på ett lån som representerar en partition. Om lånet inte förnyas inom det här intervallet upphör det att gälla och ägarskapet för partitionen flyttas till en annan instans. Standardvärdet är 60000 (60 sekunder). |
leaseRenewInterval | (Valfritt) När den anges definierar den, i millisekunder, förnyelseintervallet för alla lån för partitioner som för närvarande innehas av en instans. Standardvärdet är 17 000 (17 sekunder). |
maxItemsPerInvocation | (Valfritt) När den här egenskapen anges anger den maximala antalet objekt som tas emot per funktionsanrop. Om åtgärder i den övervakade containern utförs via lagrade procedurer bevaras transaktionsomfånget vid läsning av objekt från ändringsflödet. Därför kan antalet mottagna objekt vara högre än det angivna värdet så att objekten som ändras av samma transaktion returneras som en del av en atomisk batch. |
startFromBeginning | (Valfritt) Det här alternativet instruerar utlösaren att läsa ändringar från början av containerns ändringshistorik i stället för att starta vid den aktuella tidpunkten. Läsning från början fungerar bara första gången utlösaren startar, eftersom kontrollpunkterna redan lagras i efterföljande körningar. Om du anger det här alternativet till true när lån som redan har skapats inte har någon effekt. |
preferredLocations | (Valfritt) Definierar önskade platser (regioner) för geo-replikerade databaskonton i Azure Cosmos DB-tjänsten. Värden bör kommaavgränsas. Till exempel "USA, östra, USA, södra centrala, Europa, norra". |
Konfiguration
Gäller endast programmeringsmodellen Python v1.
I följande tabell förklaras de bindningskonfigurationsegenskaper som du anger i filen function.json , där egenskaperna skiljer sig åt efter tilläggsversion:
function.json egenskap | beskrivning |
---|---|
typ | Måste anges till cosmosDBTrigger . |
riktning | Måste anges till in . Den här parametern anges automatiskt när du skapar utlösaren i Azure-portalen. |
Namn | Variabelnamnet som används i funktionskoden som representerar listan över dokument med ändringar. |
samband | Namnet på en appinställning eller inställningssamling som anger hur du ansluter till det Azure Cosmos DB-konto som övervakas. Mer information finns i Anslutningar. |
databaseName | Namnet på Azure Cosmos DB-databasen med containern som övervakas. |
containerName | Namnet på containern som övervakas. |
leaseConnection | (Valfritt) Namnet på en appinställning eller inställningscontainer som anger hur du ansluter till det Azure Cosmos DB-konto som innehåller lånecontainern. När värdet inte har angetts används det connection . Den här parametern anges automatiskt när bindningen skapas i portalen. Niska veze för lånecontainern måste ha skrivbehörighet. |
leaseDatabaseName | (Valfritt) Namnet på databasen som innehåller containern som används för att lagra lån. När inställningen inte har angetts används värdet för inställningen databaseName . |
leaseContainerName | (Valfritt) Namnet på containern som används för att lagra lån. När värdet inte har angetts används det leases . |
createLeaseContainerIfNotExists | (Valfritt) När den är inställd true på skapas lånecontainern automatiskt när den inte redan finns. Standardvärdet är false . När du använder Microsoft Entra-identiteter om du anger värdet till är det inte tillåtet att true skapa containrar och funktionen kan inte starta. |
leasesContainerThroughput | (Valfritt) Definierar antalet enheter för begäranden som ska tilldelas när lånecontainern skapas. Den här inställningen används endast när createLeaseContainerIfNotExists är inställd på true . Den här parametern anges automatiskt när bindningen skapas med hjälp av portalen. |
leaseContainerPrefix | (Valfritt) När värdet anges läggs det till som ett prefix till lånen som skapats i lånecontainern för den här funktionen. Med hjälp av ett prefix kan två separata Azure Functions dela samma lånecontainer med hjälp av olika prefix. |
feedPollDelay | (Valfritt) Tiden (i millisekunder) för fördröjningen mellan avsökningen av en partition för nya ändringar i flödet, när alla aktuella ändringar har tömts. Standardvärdet är 5 000 millisekunder eller 5 sekunder. |
leaseAcquireInterval | (Valfritt) När den anges definierar den i millisekunder intervallet för att starta en uppgift för att beräkna om partitioner fördelas jämnt mellan kända värdinstanser. Standardvärdet är 13 000 (13 sekunder). |
leaseExpirationInterval | (Valfritt) När den anges definierar den i millisekunder det intervall för vilket lånet tas på ett lån som representerar en partition. Om lånet inte förnyas inom det här intervallet upphör det att gälla och ägarskapet för partitionen flyttas till en annan instans. Standardvärdet är 60000 (60 sekunder). |
leaseRenewInterval | (Valfritt) När den anges definierar den, i millisekunder, förnyelseintervallet för alla lån för partitioner som för närvarande innehas av en instans. Standardvärdet är 17 000 (17 sekunder). |
maxItemsPerInvocation | (Valfritt) När den här egenskapen anges anger den maximala antalet objekt som tas emot per funktionsanrop. Om åtgärder i den övervakade containern utförs via lagrade procedurer bevaras transaktionsomfånget vid läsning av objekt från ändringsflödet. Därför kan antalet mottagna objekt vara högre än det angivna värdet så att objekten som ändras av samma transaktion returneras som en del av en atomisk batch. |
startFromBeginning | (Valfritt) Det här alternativet instruerar utlösaren att läsa ändringar från början av containerns ändringshistorik i stället för att starta vid den aktuella tidpunkten. Läsning från början fungerar bara första gången utlösaren startar, eftersom kontrollpunkterna redan lagras i efterföljande körningar. Om du anger det här alternativet till true när lån som redan har skapats inte har någon effekt. |
startFromTime | (Valfritt) Hämtar eller anger datum och tid från vilken ändringsflödesläsningen ska initieras. Det rekommenderade formatet är ISO 8601 med UTC-designatorn, till exempel 2021-02-16T14:19:29Z . Detta används endast för att ange det inledande utlösartillståndet. När utlösaren har ett lånetillstånd har det ingen effekt att ändra det här värdet. |
preferredLocations | (Valfritt) Definierar önskade platser (regioner) för geo-replikerade databaskonton i Azure Cosmos DB-tjänsten. Värden bör kommaavgränsas. Till exempel "USA, östra, USA, södra centrala, Europa, norra". |
Se avsnittet Exempel för fullständiga exempel.
Användning
Utlösaren kräver en andra samling som används för att lagra lån över partitionerna. Både samlingen som övervakas och samlingen som innehåller lånen måste vara tillgänglig för att utlösaren ska fungera.
Viktigt!
Om flera funktioner har konfigurerats för att använda en Azure Cosmos DB-utlösare för samma samling bör var och en av funktionerna använda en dedikerad lånesamling eller ange en annan LeaseCollectionPrefix
för varje funktion. Annars utlöses bara en av funktionerna. Information om prefixet finns i avsnittet Attribut.
Viktigt!
Om flera funktioner har konfigurerats för att använda en Azure Cosmos DB-utlösare för samma samling bör var och en av funktionerna använda en dedikerad lånesamling eller ange en annan leaseCollectionPrefix
för varje funktion. Annars utlöses bara en av funktionerna. Information om prefixet finns i avsnittet Anteckningar.
Viktigt!
Om flera funktioner har konfigurerats för att använda en Azure Cosmos DB-utlösare för samma samling bör var och en av funktionerna använda en dedikerad lånesamling eller ange en annan leaseCollectionPrefix
för varje funktion. Annars utlöses bara en av funktionerna. Information om prefixet finns i avsnittet Konfiguration.
Utlösaren anger inte om ett dokument har uppdaterats eller infogats, utan innehåller bara själva dokumentet. Om du behöver hantera uppdateringar och infogningar på olika sätt kan du göra det genom att implementera tidsstämpelfält för infogning eller uppdatering.
Vilken parametertyp som stöds av Azure Cosmos DB-utlösaren beror på functions-körningsversionen, tilläggspaketversionen och den C#-modalitet som används.
När du vill att funktionen ska bearbeta ett enda dokument kan Cosmos DB-utlösaren binda till följande typer:
Typ | Beskrivning |
---|---|
JSON-serialiserbara typer | Functions försöker deserialisera JSON-data i dokumentet från Cosmos DB-ändringsflödet till en vanlig CLR-objekttyp (POCO). |
När du vill att funktionen ska bearbeta en batch med dokument kan Cosmos DB-utlösaren binda till följande typer:
Typ | Beskrivning |
---|---|
IEnumerable<T> där T är en JSON-serialiserbar typ |
En uppräkning av entiteter som ingår i batchen. Varje post representerar ett dokument från Cosmos DB-ändringsflödet. |
anslutningar
Egenskaperna connectionStringSetting
/connection
och leaseConnectionStringSetting
/leaseConnection
är referenser till miljökonfigurationen som anger hur appen ska ansluta till Azure Cosmos DB. De kan ange:
- Namnet på en programinställning som innehåller en niska veze
- Namnet på ett delat prefix för flera programinställningar, som tillsammans definierar en identitetsbaserad anslutning. Det här alternativet är endast tillgängligt för versionerna
connection
ochleaseConnection
från version 4.x eller senare av tillägget.
Om det konfigurerade värdet både är en exakt matchning för en enskild inställning och en prefixmatchning för andra inställningar används den exakta matchningen.
Connection string
Niska veze för ditt databaskonto ska lagras i en programinställning med ett namn som matchar värdet som anges av anslutningsegenskapen för bindningskonfigurationen.
Identitetsbaserade anslutningar
Om du använder version 4.x eller senare av tillägget kan du i stället för att använda en niska veze med en hemlighet låta appen använda en Microsoft Entra-identitet. Gör detta genom att definiera inställningarna under ett vanligt prefix som mappas till anslutningsegenskapen i utlösaren och bindningskonfigurationen.
I det här läget kräver tillägget följande egenskaper:
Property | Miljövariabelmall | beskrivning | Exempelvärde |
---|---|---|---|
Kontoslutpunkt | <CONNECTION_NAME_PREFIX>__accountEndpoint |
Azure Cosmos DB-kontots slutpunkts-URI. | <https:// database_account_name.documents.azure.com:443/> |
Ytterligare egenskaper kan anges för att anpassa anslutningen. Se Vanliga egenskaper för identitetsbaserade anslutningar.
När identitetsbaserade anslutningar finns i Azure Functions-tjänsten använder de en hanterad identitet. Den systemtilldelade identiteten används som standard, även om en användartilldelad identitet kan anges med credential
egenskaperna och clientID
. Observera att det inte går att konfigurera en användartilldelad identitet med ett resurs-ID. När den körs i andra sammanhang, till exempel lokal utveckling, används utvecklaridentiteten i stället, även om den kan anpassas. Se Lokal utveckling med identitetsbaserade anslutningar.
Bevilja behörighet till identiteten
Den identitet som används måste ha behörighet att utföra de avsedda åtgärderna. För de flesta Azure-tjänster innebär det att du måste tilldela en roll i Azure RBAC med hjälp av antingen inbyggda eller anpassade roller som ger dessa behörigheter.
Viktigt!
Vissa behörigheter kan exponeras av måltjänsten som inte är nödvändiga för alla kontexter. Om möjligt följer du principen om minsta behörighet och beviljar identiteten endast nödvändiga privilegier. Om appen till exempel bara behöver kunna läsa från en datakälla använder du en roll som bara har behörighet att läsa. Det skulle vara olämpligt att tilldela en roll som också tillåter skrivning till tjänsten, eftersom detta skulle vara överdriven behörighet för en läsåtgärd. På samma sätt vill du se till att rolltilldelningen endast är begränsad till de resurser som behöver läsas.
Cosmos DB använder inte Azure RBAC för dataåtgärder. I stället använder den ett inbyggt RBAC-system i Cosmos DB som bygger på liknande begrepp. Du måste skapa en rolltilldelning som ger åtkomst till ditt databaskonto vid körning. Azure RBAC Management-roller som Ägare räcker inte. I följande tabell visas inbyggda roller som rekommenderas när du använder Azure Cosmos DB-tillägget i normal drift. Programmet kan kräva ytterligare behörigheter baserat på den kod du skriver.
Bindningstyp | Exempel på inbyggda roller1 |
---|---|
Utlösare2 | Inbyggd Cosmos DB-datadeltagare |
Indatabindning | Inbyggd Cosmos DB-dataläsare |
Utdatabindning | Inbyggd Cosmos DB-datadeltagare |
1 Dessa roller kan inte användas i en Azure RBAC-rolltilldelning. Mer information om hur du tilldelar dessa roller finns i den inbyggda RBAC-systemdokumentationen för Cosmos DB.
2 När du använder identitet behandlar Cosmos DB skapandet av containrar som en hanteringsåtgärd. Den är inte tillgänglig som en dataplansåtgärd för utlösaren. Du måste se till att du skapar de containrar som behövs av utlösaren (inklusive lånecontainern) innan du konfigurerar funktionen.