Trigger di Azure Cosmos DB per Funzioni di Azure 2.x e versioni successive
Il trigger di Azure Cosmos DB usa il feed di modifiche di Azure Cosmos DB per ascoltare inserimenti e aggiornamenti tra partizioni. Il feed di modifiche pubblica elementi nuovi e aggiornati, non inclusi gli aggiornamenti dalle eliminazioni.
Per informazioni sui dettagli di impostazione e configurazione, vedere la panoramica.
Le decisioni di ridimensionamento di Cosmos DB per i piani a consumo e Premium vengono eseguite tramite il ridimensionamento basato su destinazione. Per altre informazioni, vedere Scalabilità basata su destinazione.
Importante
Questo articolo usa schede per supportare le versioni diverse del modello di programmazione Node.js. Il modello v4 è disponibile a livello generale ed è progettato per offrire un'esperienza più flessibile e intuitiva per gli sviluppatori JavaScript e TypeScript. Per altre informazioni sul funzionamento del modello v4, vedere la guida per gli sviluppatori di Node.js per Funzioni di Azure. Altre informazioni sulle differenze tra i modelli v3 e v4 sono disponibili nella guida alla migrazione.
Funzioni di Azure supporta due modelli di programmazione per Python. Il modo in cui si definiscono le associazioni dipende dal modello di programmazione scelto.
Il modello di programmazione Python v2 consente di definire associazioni usando elementi Decorator direttamente nel codice della funzione Python. Per altre informazioni, vedere la Guida per sviluppatori Python.
Questo articolo supporta entrambi i modelli di programmazione.
Esempio
L'utilizzo del trigger dipende dalla versione del pacchetto di estensione e dalla modalità C# usata nell'app per le funzioni, che può essere una delle seguenti:
Una funzione C# compilata di libreria di classi di processo di lavoro viene eseguita in un processo isolato dal runtime.
Gli esempi seguenti dipendono dalla versione dell'estensione per la modalità C# specificata.
Questo esempio si riferisce a un tipo ToDoItem
semplice:
public class ToDoItem
{
public string? Id { get; set; }
public string? Description { get; set; }
}
La funzione seguente viene richiamata quando sono presenti inserimenti o aggiornamenti nel database e nella raccolta specificati.
[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);
}
}
}
Questa funzione viene richiamata quando sono presenti inserimenti o aggiornamenti nel database e nel contenitore specificati.
A causa delle modifiche dello schema in Azure Cosmos DB SDK, la versione 4.x dell'estensione Azure Cosmos DB richiede azure-functions-java-library V3.0.0 per le funzioni 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());
}
Nella libreria di runtime delle funzioni Java usare l'annotazione @CosmosDBTrigger
sui parametri il cui valore proviene da Azure Cosmos DB. Questa annotazione è utilizzabile con i tipi Java nativi, con oggetti POJO o con valori nullable tramite Optional<T>
.
L'esempio seguente illustra una funzione TypeScript trigger di Azure Cosmos DB. La funzione scrive messaggi di log quando i record di Azure Cosmos DB vengono aggiunti o modificati.
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,
});
L'esempio seguente illustra una funzione JavaScript trigger di Azure Cosmos DB. La funzione scrive messaggi di log quando i record di Azure Cosmos DB vengono aggiunti o modificati.
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`);
},
});
L'esempio seguente illustra come eseguire una funzione come modifiche ai dati in Azure Cosmos DB.
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "<connection-app-setting>",
"databaseName": "Tasks",
"collectionName": "Items",
"createLeaseCollectionIfNotExists": true
}
Si noti che alcuni nomi degli attributi di associazione sono stati modificati nella versione 4.x dell'estensione Azure Cosmos DB.
Nel file run.ps1 è possibile accedere al documento che attiva la funzione tramite il $Documents
parametro .
param($Documents, $TriggerMetadata)
Write-Host "First document Id modified : $($Documents[0].id)"
L'esempio seguente illustra un'associazione di trigger di Azure Cosmos DB. L'esempio dipende dal fatto che si usi il modello di programmazione Python v1 o 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'])
Attributi
Sia le librerie C# in-process che isolate usano CosmosDBTriggerAttribute per definire la funzione. Lo script C# usa invece un file di configurazione function.json come descritto nella guida per gli script C#.
Proprietà dell'attributo | Descrizione |
---|---|
Connessione | Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi all'account Azure Cosmos DB monitorato. Per altre informazioni, vedere Connections. |
DatabaseName | Il nome del database di Azure Cosmos DB con il contenitore monitorato. |
ContainerName | Nome del contenitore monitorato. |
LeaseConnection | (Facoltativo) Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi all'account Azure Cosmos DB che contiene il contenitore di lease. Se non impostato, viene usato il valore Connection . Questo parametro viene impostato automaticamente al momento della creazione dell'associazione nel portale. La stringa di connessione per il contenitore di lease deve disporre di autorizzazioni di scrittura. |
LeaseDatabaseName | (Facoltativo) Il nome del database in cui si trova il contenitore usato per archiviare i lease. Se non impostato, viene usato il valore dell'impostazione databaseName . |
LeaseContainerName | (Facoltativo) Nome del contenitore usato per archiviare i lease. Se non impostato, viene usato il valore leases . |
CreateLeaseContainerIfNotExists | (Facoltativo) Se impostato su true , il contenitore lease viene creato automaticamente se non è già esistente. Il valore predefinito è false . Quando si usano identità di Microsoft Entra se si imposta il valore su true , la creazione di contenitori non è un’operazione consentita e la funzione non potrà essere avviata. |
LeasesContainerThroughput | (Facoltativo) Definisce il numero di unità richiesta da assegnare quando viene creato il contenitore lease. Questa impostazione viene usata solo quando CreateLeaseContainerIfNotExists è impostato su true . Questo parametro viene impostato automaticamente al momento della creazione dell'associazione tramite il portale. |
LeaseContainerPrefix | (Facoltativo) Se impostato, il valore viene aggiunto come prefisso ai lease creati nel contenitore Lease per questa funzione. L'uso di un prefisso consente a due funzioni di Azure diverse di condividere lo stesso contenitore lease usando prefissi diversi. |
FeedPollDelay | (Facoltativo) Il tempo (in millisecondi) per il ritardo tra il polling di una partizione alla ricerca di nuove modifiche al feed, dopo la rimozione di tutte le modifiche correnti. L'impostazione predefinita è 5,000 millisecondi (o 5 secondi). |
LeaseAcquireInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo per l'avvio di un'attività che consente di calcolare se le partizioni sono distribuite equamente tra le istanze di host note. Il valore predefinito è 13000 (13 secondi). |
LeaseExpirationInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo che indica la durata di un lease su un lease che rappresenta una partizione. Se il lease non viene rinnovato entro questo intervallo, ne comporterà la scadenza e la proprietà della partizione passerà a un'altra istanza. Il valore predefinito è 60000 (60 secondi). |
LeaseRenewInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo di rinnovo per tutti i lease per le partizioni attualmente occupate da un'istanza. Il valore predefinito è 17000 (17 secondi). |
MaxItemsPerInvocation | (Facoltativo) Se impostata, questa proprietà imposta il numero massimo di elementi ricevuti per Chiamata di funzione. Se le operazioni nel contenitore monitorato vengono eseguite tramite stored procedure, l'ambito della transazione viene mantenuto durante la lettura degli elementi dal feed di modifiche. Di conseguenza, il numero di elementi ricevuti potrebbe essere superiore al valore specificato in modo che gli elementi modificati dalla stessa transazione vengano restituiti come parte di un batch atomico. |
StartFromBeginning | (Facoltativo) Questa opzione indica al trigger di leggere le modifiche dall'inizio della cronologia delle modifiche del contenitore anziché a partire dall'ora corrente. La lettura dall’inizio funziona solo al primo avvio del trigger, perché per le esecuzioni successive i checkpoint sono già archiviati. L'impostazione di questa opzione su true in presenza di lease già creati non ha alcun effetto. |
StartFromTime | (Facoltativo) Ottiene o imposta la data e l'ora da cui inizializzare l'operazione di lettura del feed di modifiche. Il formato consigliato è ISO 8601 con l'identificatore UTC, ad esempio 2021-02-16T14:19:29Z . Viene usato solo per impostare lo stato del trigger iniziale. Dopo che il trigger ha uno stato di lease, la modifica di questo valore non ha alcun effetto. |
PreferredLocations | (Facoltativo) Definisce le posizioni preferite (aree) per gli account di database con replica geografica nel servizio Azure Cosmos DB. I valori devono essere delimitati da virgole. Ad esempio, "Stati Uniti orientali, Stati Uniti centro-meridionali, Europa settentrionale". |
Elementi Decorator
Si applica solo al modello di programmazione Python v2.
Per le funzioni Python v2 definite usando un elemento Decorator, le proprietà seguenti in cosmos_db_trigger
:
Proprietà | Descrizione |
---|---|
arg_name |
Il nome della variabile usato nel codice funzione che rappresenta l'elenco di documenti con le modifiche. |
database_name |
Il nome del database di Azure Cosmos DB con la raccolta monitorata. |
collection_name |
Nome della raccolta di Azure Cosmos DB monitorata. |
connection |
Il stringa di connessione di Azure Cosmos DB monitorato. |
Per le funzioni Python definite tramite function.json, vedere la sezione Configurazione .
Annotazioni
A causa delle modifiche dello schema in Azure Cosmos DB SDK, la versione 4.x dell'estensione Azure Cosmos DB richiede azure-functions-java-library V3.0.0 per le funzioni Java.
Usare l'annotazione @CosmosDBTrigger
sui parametri che leggono i dati da Azure Cosmos DB. L'annotazione supporta le proprietà seguenti:
Proprietà dell'attributo | Descrizione |
---|---|
connection | Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi all'account Azure Cosmos DB monitorato. Per altre informazioni, vedere Connections. |
name | Nome della funzione. |
databaseName | Il nome del database di Azure Cosmos DB con il contenitore monitorato. |
containerName | Nome del contenitore monitorato. |
leaseConnectionStringSetting | (Facoltativo) Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi all'account Azure Cosmos DB che contiene il contenitore di lease. Se non impostato, viene usato il valore Connection . Questo parametro viene impostato automaticamente al momento della creazione dell'associazione nel portale. La stringa di connessione per il contenitore di lease deve disporre di autorizzazioni di scrittura. |
leaseDatabaseName | (Facoltativo) Il nome del database in cui si trova il contenitore usato per archiviare i lease. Se non impostato, viene usato il valore dell'impostazione databaseName . |
leaseContainerName | (Facoltativo) Nome del contenitore usato per archiviare i lease. Se non impostato, viene usato il valore leases . |
createLeaseContainerIfNotExists | (Facoltativo) Se impostato su true , il contenitore lease viene creato automaticamente se non è già esistente. Il valore predefinito è false . Quando si usano le identità di Microsoft Entra se si imposta il valore su true , la creazione di contenitori non è un'operazione consentita e la funzione non verrà avviata. |
leasesContainerThroughput | (Facoltativo) Definisce il numero di unità richiesta da assegnare quando viene creato il contenitore lease. Questa impostazione viene usata solo quando CreateLeaseContainerIfNotExists è impostato su true . Questo parametro viene impostato automaticamente al momento della creazione dell'associazione tramite il portale. |
leaseContainerPrefix | (Facoltativo) Se impostato, il valore viene aggiunto come prefisso ai lease creati nel contenitore Lease per questa funzione. L'uso di un prefisso consente a due funzioni di Azure diverse di condividere lo stesso contenitore lease usando prefissi diversi. |
feedPollDelay | (Facoltativo) Il tempo (in millisecondi) per il ritardo tra il polling di una partizione alla ricerca di nuove modifiche al feed, dopo la rimozione di tutte le modifiche correnti. L'impostazione predefinita è 5,000 millisecondi (o 5 secondi). |
leaseAcquireInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo per l'avvio di un'attività che consente di calcolare se le partizioni sono distribuite equamente tra le istanze di host note. Il valore predefinito è 13000 (13 secondi). |
leaseExpirationInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo che indica la durata di un lease su un lease che rappresenta una partizione. Se il lease non viene rinnovato entro questo intervallo, scadrà e la proprietà della partizione verrà spostata in un'altra istanza. Il valore predefinito è 60000 (60 secondi). |
leaseRenewInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo di rinnovo per tutti i lease per le partizioni attualmente occupate da un'istanza. Il valore predefinito è 17000 (17 secondi). |
maxItemsPerInvocation | (Facoltativo) Se impostata, questa proprietà imposta il numero massimo di elementi ricevuti per Chiamata di funzione. Se le operazioni nel contenitore monitorato vengono eseguite tramite stored procedure, l'ambito della transazione viene mantenuto durante la lettura degli elementi dal feed di modifiche. Di conseguenza, il numero di elementi ricevuti potrebbe essere superiore al valore specificato in modo che gli elementi modificati dalla stessa transazione vengano restituiti come parte di un batch atomico. |
startFromBeginning | (Facoltativo) Questa opzione indica al trigger di leggere le modifiche dall'inizio della cronologia delle modifiche del contenitore anziché a partire dall'ora corrente. La lettura dall’inizio funziona solo al primo avvio del trigger, perché per le esecuzioni successive i checkpoint sono già archiviati. L'impostazione di questa opzione su true in presenza di lease già creati non ha alcun effetto. |
preferredLocations | (Facoltativo) Definisce le posizioni preferite (aree) per gli account di database con replica geografica nel servizio Azure Cosmos DB. I valori devono essere delimitati da virgole. Ad esempio, "Stati Uniti orientali, Stati Uniti centro-meridionali, Europa settentrionale". |
Impostazione
Si applica solo al modello di programmazione Python v1.
Nella tabella seguente vengono illustrate le proprietà che è possibile impostare sull'oggetto options
passato al app.cosmosDB()
metodo . Le type
proprietà , direction
e name
non si applicano al modello v4.
La tabella seguente illustra le proprietà di configurazione dell'associazione impostate nel file function.json , in cui le proprietà differiscono per la versione dell'estensione:
Proprietà di function.json | Descrizione |
---|---|
type | Deve essere impostato su cosmosDBTrigger . |
direction | Deve essere impostato su in . Questo parametro viene impostato automaticamente quando si crea il trigger nel portale di Azure. |
name | Il nome della variabile usato nel codice funzione che rappresenta l'elenco di documenti con le modifiche. |
connection | Nome di un'impostazione o di una raccolta di impostazioni dell'app che specifica come connettersi all'account Azure Cosmos DB monitorato. Per altre informazioni, vedere Connections. |
databaseName | Il nome del database di Azure Cosmos DB con il contenitore monitorato. |
containerName | Nome del contenitore monitorato. |
leaseConnection | (Facoltativo) Nome di un'impostazione o di un contenitore di impostazioni dell'app che specifica come connettersi all'account Azure Cosmos DB che contiene il contenitore di lease. Se non impostato, viene usato il valore connection . Questo parametro viene impostato automaticamente al momento della creazione dell'associazione nel portale. La stringa di connessione per il contenitore di lease deve disporre di autorizzazioni di scrittura. |
leaseDatabaseName | (Facoltativo) Il nome del database in cui si trova il contenitore usato per archiviare i lease. Se non impostato, viene usato il valore dell'impostazione databaseName . |
leaseContainerName | (Facoltativo) Nome del contenitore usato per archiviare i lease. Se non impostato, viene usato il valore leases . |
createLeaseContainerIfNotExists | (Facoltativo) Se impostato su true , il contenitore lease viene creato automaticamente se non è già esistente. Il valore predefinito è false . Quando si usano identità di Microsoft Entra se si imposta il valore su true , la creazione di contenitori non è un’operazione consentita e la funzione non potrà essere avviata. |
leasesContainerThroughput | (Facoltativo) Definisce il numero di unità richiesta da assegnare quando viene creato il contenitore lease. Questa impostazione viene usata solo quando createLeaseContainerIfNotExists è impostato su true . Questo parametro viene impostato automaticamente al momento della creazione dell'associazione tramite il portale. |
leaseContainerPrefix | (Facoltativo) Se impostato, il valore viene aggiunto come prefisso ai lease creati nel contenitore Lease per questa funzione. L'uso di un prefisso consente a due funzioni di Azure diverse di condividere lo stesso contenitore lease usando prefissi diversi. |
feedPollDelay | (Facoltativo) Il tempo (in millisecondi) per il ritardo tra il polling di una partizione alla ricerca di nuove modifiche al feed, dopo la rimozione di tutte le modifiche correnti. L'impostazione predefinita è 5,000 millisecondi (o 5 secondi). |
leaseAcquireInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo per l'avvio di un'attività che consente di calcolare se le partizioni sono distribuite equamente tra le istanze di host note. Il valore predefinito è 13000 (13 secondi). |
leaseExpirationInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo che indica la durata di un lease su un lease che rappresenta una partizione. Se il lease non viene rinnovato entro questo intervallo, ne comporterà la scadenza e la proprietà della partizione passerà a un'altra istanza. Il valore predefinito è 60000 (60 secondi). |
leaseRenewInterval | (Facoltativo) Se impostato, definisce, in millisecondi, l'intervallo di rinnovo per tutti i lease per le partizioni attualmente occupate da un'istanza. Il valore predefinito è 17000 (17 secondi). |
maxItemsPerInvocation | (Facoltativo) Se impostata, questa proprietà imposta il numero massimo di elementi ricevuti per Chiamata di funzione. Se le operazioni nel contenitore monitorato vengono eseguite tramite stored procedure, l'ambito della transazione viene mantenuto durante la lettura degli elementi dal feed di modifiche. Di conseguenza, il numero di elementi ricevuti potrebbe essere superiore al valore specificato in modo che gli elementi modificati dalla stessa transazione vengano restituiti come parte di un batch atomico. |
startFromBeginning | (Facoltativo) Questa opzione indica al trigger di leggere le modifiche dall'inizio della cronologia delle modifiche del contenitore anziché a partire dall'ora corrente. La lettura dall’inizio funziona solo al primo avvio del trigger, perché per le esecuzioni successive i checkpoint sono già archiviati. L'impostazione di questa opzione su true in presenza di lease già creati non ha alcun effetto. |
startFromTime | (Facoltativo) Ottiene o imposta la data e l'ora da cui inizializzare l'operazione di lettura del feed di modifiche. Il formato consigliato è ISO 8601 con l'identificatore UTC, ad esempio 2021-02-16T14:19:29Z . Viene usato solo per impostare lo stato del trigger iniziale. Dopo che il trigger ha uno stato di lease, la modifica di questo valore non ha alcun effetto. |
preferredLocations | (Facoltativo) Definisce le posizioni preferite (aree) per gli account di database con replica geografica nel servizio Azure Cosmos DB. I valori devono essere delimitati da virgole. Ad esempio, "Stati Uniti orientali, Stati Uniti centro-meridionali, Europa settentrionale". |
Per esempi completi, vedere la sezione di esempio.
Utilizzo
Il trigger richiede una seconda raccolta usata per archiviare i lease nelle partizioni. Sia la raccolta monitorata che la raccolta che contiene i lease deve essere disponibile affinché il trigger funzioni.
Importante
Se più funzioni sono configurate per l'uso di un trigger di Azure Cosmos DB per la stessa raccolta, ognuna delle funzioni deve usare una raccolta di lease dedicata o specificare un'altra LeaseCollectionPrefix
per ogni funzione. In caso contrario, viene attivata solo una delle funzioni. Per informazioni sul prefisso, vedere la sezione Attributi.
Importante
Se più funzioni sono configurate per l'uso di un trigger di Azure Cosmos DB per la stessa raccolta, ognuna delle funzioni deve usare una raccolta di lease dedicata o specificare un'altra leaseCollectionPrefix
per ogni funzione. In caso contrario, viene attivata solo una delle funzioni. Per informazioni sul prefisso, vedere la sezione Annotazioni.
Importante
Se più funzioni sono configurate per l'uso di un trigger di Azure Cosmos DB per la stessa raccolta, ognuna delle funzioni deve usare una raccolta di lease dedicata o specificare un'altra leaseCollectionPrefix
per ogni funzione. In caso contrario verrà attivata solo una delle funzioni. Per informazioni sul prefisso, vedere la sezione relativa alla configurazione.
Il trigger non indica se un documento è stato aggiornato o aggiunto, fornisce solo il documento stesso. Se è necessario gestire aggiornamenti e aggiunte in modo diverso, è possibile implementare campi di timestamp per le aggiunte o gli aggiornamenti.
Il tipo di parametro supportato dal trigger di Azure Cosmos DB dipende dalla versione del runtime di Funzioni, dalla versione del pacchetto di estensione e dalla modalità C# usata.
Quando si vuole che la funzione elabori un singolo documento, il trigger di Cosmos DB può essere associato ai tipi seguenti:
Tipo | Descrizione |
---|---|
Tipi serializzabili JSON | Funzioni tenta di deserializzare i dati JSON del documento dal feed di modifiche di Cosmos DB in un tipo POCO (Plain-Old CLR Object). |
Quando si vuole che la funzione elabori un batch di documenti, il trigger di Cosmos DB può essere associato ai tipi seguenti:
Tipo | Descrizione |
---|---|
IEnumerable<T> dove T è un tipo serializzabile JSON |
Enumerazione delle entità incluse nel batch. Ogni voce rappresenta un documento dal feed di modifiche di Cosmos DB. |
Connessioni
Le connectionStringSetting
/connection
proprietà e leaseConnectionStringSetting
/leaseConnection
sono riferimenti alla configurazione dell'ambiente che specifica come l'app deve connettersi ad Azure Cosmos DB. Possono specificare:
- Nome di un'impostazione dell'applicazione contenente un stringa di connessione
- Nome di un prefisso condiviso per più impostazioni dell'applicazione, insieme alla definizione di una connessione basata su identità. Questa opzione è disponibile solo per le
connection
versioni eleaseConnection
della versione 4.x o successiva dell'estensione.
Se il valore configurato è sia una corrispondenza esatta per una singola impostazione che una corrispondenza di prefisso per altre impostazioni, viene usata la corrispondenza esatta.
Stringa di connessione
Il stringa di connessione per l'account di database deve essere archiviato in un'impostazione dell'applicazione con un nome corrispondente al valore specificato dalla proprietà di connessione della configurazione dell'associazione.
Connessioni basate su identità
Se si usa la versione 4.x o successiva dell'estensione, invece di usare un stringa di connessione con un segreto, è possibile che l'app usi un'identità Microsoft Entra. A tale scopo, è necessario definire le impostazioni in un prefisso comune che esegue il mapping alla proprietà connection nella configurazione del trigger e dell'associazione.
In questa modalità, l'estensione richiede le proprietà seguenti:
Proprietà | Modello di variabile di ambiente | Descrizione | Valore di esempio |
---|---|---|---|
Endpoint dell'account | <CONNECTION_NAME_PREFIX>__accountEndpoint |
URI dell'endpoint dell'account Azure Cosmos DB. | <https:// database_account_name.documents.azure.com:443/> |
È possibile impostare proprietà aggiuntive per personalizzare la connessione. Vedere Proprietà comuni per le connessioni basate su identità.
Quando sono ospitate nel servizio Azure Functions, le connessioni basate su identità usano una identità gestita. Per impostazione predefinita, viene usata l’identità assegnata a livello di sistema, ma è comunque possibile specificare un’identità assegnata dall’utente a cui siano associate le proprietà credential
e clientID
. Si noti che la configurazione di un'identità assegnata dall'utente con un ID risorsa non è supportata. Quando viene eseguita in altri contesti, ad esempio lo sviluppo locale, viene usata l'identità dello sviluppatore, anche se può essere personalizzata. Vedere Sviluppo locale con connessioni basate su identità.
Concedere l'autorizzazione all'identità
Qualsiasi identità usata deve avere le autorizzazioni necessarie per eseguire le azioni previste. Per la maggior parte dei servizi di Azure, questo significa che è necessario assegnare un ruolo nel controllo degli accessi in base al ruolo di Azure, usando ruoli predefiniti o personalizzati che forniscono tali autorizzazioni.
Importante
È possibile che alcune autorizzazioni esposte dal servizio di destinazione non siano necessarie per tutti i contesti. Laddove possibile, rispettare il principio dei privilegi minimi e concedere all’identità solo i privilegi necessari. Ad esempio, se l'app deve essere in grado di leggere solo da un'origine dati, usare un ruolo che disponga solo dell'autorizzazione per la lettura. Sarebbe inappropriato assegnare un ruolo che consenta anche la scrittura in tale servizio, in quanto sarebbe eccessiva l'autorizzazione per un'operazione di lettura. Analogamente, è consigliabile assicurarsi che l'assegnazione di ruolo sia con ambito solo sulle risorse che devono essere lette.
Cosmos DB non usa il controllo degli accessi in base al ruolo di Azure per le operazioni dei dati. Usa invece un sistema RBAC predefinito di Cosmos DB basato su concetti simili. Sarà necessario creare un'assegnazione di ruolo che fornisca l'accesso all'account di database in fase di esecuzione. I ruoli di gestione degli accessi in base al ruolo di Azure, ad esempio Proprietario, non sono sufficienti. La tabella seguente illustra i ruoli predefiniti consigliati quando si usa l'estensione Azure Cosmos DB in condizioni di normale funzionamento. L'applicazione potrebbe richiedere autorizzazioni aggiuntive in base al codice scritto.
Tipo di associazione | Ruoli predefiniti di esempio1 |
---|---|
Trigger2 | Collaboratore dati predefinito di Cosmos DB |
Associazione di input | Lettore dati predefinito di Cosmos DB |
Associazione di output | Collaboratore dati predefinito di Cosmos DB |
1 Questi ruoli non possono essere usati in un'assegnazione di ruolo di controllo degli accessi in base al ruolo di Azure. Per informazioni dettagliate su come assegnare questi ruoli, vedere la documentazione del sistema RBAC predefinito di Cosmos DB.
2 Quando si usa l'identità, Cosmos DB considera la creazione del contenitore come operazione di gestione. Non è disponibile come operazione del piano dati per il trigger. È necessario assicurarsi di creare i contenitori necessari per il trigger (incluso il contenitore di lease) prima di configurare la funzione.