Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le déclencheur Azure Cosmos DB utilise le flux de modification Azure Cosmos DB pour écouter les insertions et les mises à jour entre les partitions. Le flux de modification publie des éléments nouveaux et mis à jour, sans compter les mises à jour découlant de suppressions. Pour un scénario de bout en bout qui utilise le déclencheur Azure Cosmos DB, consultez Quickstart : Répondre aux modifications de base de données dans Azure Cosmos DB à l’aide de Azure Functions.
Pour plus d’informations sur les détails d’installation et de configuration, consultez la vue d’ensemble.
Les décisions de mise à l’échelle de Cosmos DB pour les plans Consommation et Premium sont effectuées au moyen de la mise à l’échelle basée sur la cible. Pour plus d’informations, consultez Mise à l’échelle basée sur la cible.
Important
Cet article utilise des onglets pour prendre en charge plusieurs versions du modèle de programmation Node.js. Le modèle v4 est en disponibilité générale. Il est conçu pour offrir une expérience plus flexible et intuitive aux développeurs JavaScript et TypeScript. Pour plus d’informations sur le fonctionnement du modèle v4, reportez-vous au guide du développeur Azure Functions Node.js. Pour plus d’informations sur les différences entre v3 et v4, consultez le guide de migration.
Azure Functions prend en charge deux modèles de programmation pour Python. La façon dont vous définissez vos liaisons dépend du modèle de programmation choisi.
Le modèle de programmation Python v2 vous permet de définir des liaisons à l’aide de décorateurs directement dans votre code de fonction Python. Pour plus d’informations, consultez le guide du développeur Python.
Cet article prend en compte les deux modèles de programmation.
Pour obtenir un exemple complet de bout en bout d’utilisation du déclencheur Azure Cosmos DB, consultez Respond aux modifications de base de données dans Azure Cosmos DB à l’aide de Azure Functions.
Exemple
L’utilisation du déclencheur dépend de la version du package d’extension et de la modalité C# utilisée dans votre application de fonction, qui peut être l’une des suivantes :
Une bibliothèque de classes de processus Worker isolé est une fonction C# compilée exécutée dans un processus Worker isolé du runtime.
Les exemples suivants dépendent de la version d’extension pour le mode C# donné.
Cet exemple utilise des références de paramètres d’application et inclut la gestion des erreurs. Tout d’abord, définissez votre type de modèle :
public class ToDoItem
{
public string? Id { get; set; }
public string? Description { get; set; }
}
La fonction suivante s’exécute lorsque des insertions ou des mises à jour se produisent dans la base de données et le conteneur spécifiés :
[Function("CosmosTrigger")]
public void Run([CosmosDBTrigger(
databaseName: "%COSMOS_DATABASE_NAME%",
containerName: "%COSMOS_CONTAINER_NAME%",
Connection = "COSMOS_CONNECTION",
LeaseContainerName = "leases",
CreateLeaseContainerIfNotExists = true)] IReadOnlyList<ToDoItem> documents,
FunctionContext context)
{
if (documents is not null && documents.Any())
{
_logger.LogInformation("Documents modified: {count}", documents.Count);
foreach (var doc in documents)
{
try
{
_logger.LogInformation("Processing document Id: {id}", doc.Id);
// Add your business logic here
}
catch (Exception ex)
{
_logger.LogError(ex, "Error processing document {id}", doc.Id);
// Continue processing remaining documents
}
}
}
}
[Function("health")]
public IActionResult HealthCheck([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "health")] HttpRequest req)
{
return new OkResult();
}
L’exemple précédent utilise des références de paramètres d’application (%VAR_NAME%) au lieu de valeurs codées en dur. Pour plus d’informations sur la configuration, consultez les paramètres de l’application et les conseils de développement locaux dans l’onglet Processus.
Cette fonction est appelée lorsqu’il existe des insertions ou des mises à jour dans la base de données et le conteneur spécifiés.
En raison des modifications de schéma dans le SDK Azure Cosmos DB, la version 4.x de l’extension Azure Cosmos DB nécessite azure-functions-java-library V3.0.0 pour les fonctions 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());
}
Dans la bibliothèque runtime Java functions, utilisez l’annotation @CosmosDBTrigger sur les paramètres dont la valeur provient de Azure Cosmos DB. Utilisez cette annotation avec des types de Java natifs, des objets Java bruts (POJO) ou des valeurs nullables à l’aide de Optional<T>.
L’exemple suivant montre une fonction Azure Cosmos DB déclencheur TypeScript. La fonction écrit les messages de journal lorsque Azure Cosmos DB enregistrements sont ajoutés ou modifiés.
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’exemple suivant montre une fonction Azure Cosmos DB déclencheur JavaScript. La fonction écrit les messages de journal lorsque Azure Cosmos DB enregistrements sont ajoutés ou modifiés.
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’exemple suivant montre comment exécuter une fonction en tant que modifications de données dans Azure Cosmos DB.
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "<connection-app-setting>",
"databaseName": "Tasks",
"collectionName": "Items",
"createLeaseCollectionIfNotExists": true
}
Notez que certains des noms d’attributs de liaison ont changé dans la version 4.x de l’extension Azure Cosmos DB.
Dans le fichier run.ps1, vous avez accès au document qui déclenche la fonction avec le paramètre $Documents.
param($Documents, $TriggerMetadata)
Write-Host "First document Id modified : $($Documents[0].id)"
L’exemple suivant montre une liaison de déclencheur Azure Cosmos DB. L’exemple dépend de l’utilisation du modèle de programmation v1 ou v2 Python.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="CosmosDBTrigger")
@app.cosmos_db_trigger(arg_name="documents",
database_name="%COSMOS_DATABASE_NAME%",
container_name="%COSMOS_CONTAINER_NAME%",
connection="COSMOS_CONNECTION",
lease_container_name="leases",
create_lease_container_if_not_exists="true")
def cosmos_trigger(documents: func.DocumentList) -> str:
if documents:
for doc in documents:
try:
logging.info('Processing document id: %s', doc['id'])
# Add your business logic here
except Exception as e:
logging.error('Error processing document %s: %s', doc.get('id', 'unknown'), str(e))
# Continue processing remaining documents
@app.function_name(name="health")
@app.route(route="health", methods=["GET"])
def health_check(req: func.HttpRequest) -> func.HttpResponse:
"""Health check endpoint for monitoring."""
return func.HttpResponse("OK", status_code=200)
L’exemple précédent utilise des références de paramètres d’application (%VAR_NAME%) au lieu de valeurs codées en dur.
Paramètres de l’application
Configurez ces paramètres d’application pour les connexions basées sur des identités :
| Réglage | Description | Exemple |
|---|---|---|
COSMOS_DATABASE_NAME |
Nom de la base de données Azure Cosmos DB | my-database |
COSMOS_CONTAINER_NAME |
Nom du conteneur à surveiller | my-container |
COSMOS_CONNECTION__accountEndpoint |
point de terminaison de compte Azure Cosmos DB | https://mycosmosdb.documents.azure.com:443/ |
COSMOS_CONNECTION__credential |
Défini sur pour managedidentity UAMI |
managedidentity |
COSMOS_CONNECTION__clientId |
Identifiant client de l’identité gérée assignée par l’utilisateur | 00000000-0000-0000-0000-000000000000 |
Développement local
Pour le développement local, créez un local.settings.json fichier :
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "python",
"COSMOS_DATABASE_NAME": "my-database",
"COSMOS_CONTAINER_NAME": "my-container",
"COSMOS_CONNECTION__accountEndpoint": "https://mycosmosdb.documents.azure.com:443/"
}
}
Conseil / Astuce
Pour le développement local, omettre COSMOS_CONNECTION__credential et COSMOS_CONNECTION__clientId. Le DefaultAzureCredential tente plusieurs informations d’identification, y compris vos informations d’identification de connexion Azure CLI.
Conditions préalables pour le développement local :
-
Azure CLI avec
az loginterminé -
Émulateur de stockage Azurite en cours d’exécution (
azurite --silent)
L’exemple suivant montre une fonction déclencheuse d’Azure Cosmos DB qui enregistre chaque document modifié :
package main
import (
"context"
"log"
"github.com/azure/azure-functions-golang-worker/sdk"
"github.com/azure/azure-functions-golang-worker/sdk/bindings"
"github.com/azure/azure-functions-golang-worker/worker"
)
func main() {
app := sdk.FunctionApp()
app.CosmosDB("cosmosDBTrigger", processChanges,
sdk.WithDatabase("mydb"),
sdk.WithContainer("mycontainer"),
sdk.WithConnection("CosmosDBConnection"),
)
worker.Start(app)
}
func processChanges(ctx context.Context, docs []bindings.CosmosDocument) error {
for _, doc := range docs {
log.Printf("Document modified: %s", doc.ID)
}
return nil
}
Attributs
Les bibliothèques C# de processus in-process et isolés permettent CosmosDBTriggerAttribute de définir la fonction. Le script C# utilise à la place un fichier de configuration function.json comme décrit dans le guide de script C#.
Les propriétés spécifiques dépendent du modèle de processus et de la version d’extension :
Les bibliothèques de processus worker isolées utilisent CosmosDBTriggerAttribute à partir de l’espace de noms Microsoft.Azure.Functions.Worker, qui définit ces propriétés :
| Propriété d’attribut | Description |
|---|---|
| Connection | Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie comment se connecter au compte Azure Cosmos DB en cours d’analyse. Pour plus d’informations, consultez Connexions. |
| DatabaseName | Nom de la base de données Azure Cosmos DB avec le conteneur surveillé. |
| ContainerName | Nom du conteneur surveillé. |
| LeaseConnection | (Facultatif) Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie comment se connecter au compte Azure Cosmos DB qui contient le conteneur de bail. S’il n’est pas défini, la valeur Connection est utilisée. Ce paramètre est automatiquement défini lorsque la liaison est créée dans le portail. Les chaîne de connexion pour le conteneur de baux doivent disposer d’autorisations d’écriture. |
| LeaseDatabaseName | (Facultatif) Nom de la base de données contenant le conteneur utilisé pour stocker des baux. S’il n’est pas défini, la valeur du paramètre databaseName est utilisée. |
| LeaseContainerName | (Facultatif) Nom du conteneur utilisé pour stocker des baux. S’il n’est pas défini, la valeur leases est utilisée. |
| CreateLeaseContainerIfNotExists | (Facultatif) Lorsque la valeur est définie sur true, le conteneur de baux est créé automatiquement s’il n’existe pas. La valeur par défaut est false. Lorsque vous utilisez des identités Microsoft Entra si vous définissez la valeur sur true, la création de conteneurs n'est pas une opération autorisée et votre fonction ne pourra pas démarrer. |
| LeasesContainerThroughput | (Facultatif) Définit le nombre d’unités de requête à attribuer lors de la création du conteneur de baux. Ce paramètre est utilisé uniquement quand CreateLeaseContainerIfNotExists est défini sur true. Ce paramètre est automatiquement défini lors de la création de la liaison à l’aide du portail. |
| LeaseContainerPrefix | (Facultatif) Lorsque cette valeur est définie, elle est ajoutée en tant que préfixe aux baux créés dans le conteneur de baux pour cette fonction. L’utilisation d’un préfixe permet à deux Azure Functions distincts de partager le même conteneur de baux à l’aide de préfixes différents. |
| FeedPollDelay | (Facultatif) Durée (en millisecondes) du délai s’écoulant entre le moment où toutes les modifications d’une partition sont purgées du flux et le moment où la partition est interrogée afin d’identifier de nouvelles modifications. La valeur par défaut est 5 000 millisecondes, soit 5 secondes. |
| LeaseAcquireInterval | (Facultatif) Quand ce paramètre est défini, il spécifie, en millisecondes, l’intervalle pour déclencher une tâche afin de calculer si les partitions sont réparties uniformément parmi les instances d’hôte connues. La valeur par défaut est 13 000 (13 secondes). |
| LeaseExpirationInterval | (Facultatif) Quand ce paramètre est défini, il spécifie, en millisecondes, l’intervalle selon lequel le bail est pris sur un bail représentant une partition. Si le bail n’est pas renouvelé dans cet intervalle, il expire et une autre instance devient propriétaire de la partition. La valeur par défaut est 60 000 (60 secondes). |
| LeaseRenewInterval | (Facultatif) Quand ce paramètre est défini, il spécifie, en millisecondes, l’intervalle de renouvellement de tous les baux pour les partitions actuellement détenues par une instance. La valeur par défaut est 17 000 (17 secondes). |
| MaxItemsPerInvocation | (Facultatif) Quand cette propriété est définie, elle détermine le nombrer maximal d’éléments reçus par appel de fonction. Si des opérations du conteneur analysé sont effectuées par le biais de procédures stockées, l’étendue de transaction est préservée lors de la lecture des éléments à partir du flux de modification. Par conséquent, le nombre d’éléments reçus pourrait être supérieur à la valeur spécifiée de sorte que les éléments modifiés par la même transaction soient retournés dans le cadre d’un même lot atomique. |
| StartFromBeginning | (Facultatif) Cette option indique au déclencheur de lire les modifications depuis le début de l’historique de modifications du conteneur au lieu de commencer à l’heure actuelle. La lecture depuis le début fonctionne uniquement au premier démarrage du déclencheur, car, lors des exécutions suivantes, les points de contrôle sont déjà stockés. La définition de cette option sur true quand des baux ont déjà été créés est sans effet. |
| StartFromTime | (Facultatif) Obtient ou définit la date et l’heure à partir desquelles l’opération de lecture du flux de modification doit être initialisée. Le format recommandé est ISO 8601 avec le désignateur UTC, par exemple 2021-02-16T14:19:29Z. Utilisé uniquement pour définir l’état initial du déclencheur. Une fois que le déclencheur a un état de bail, la modification de cette valeur n’a aucun effet. |
| PreferredLocations | (Facultatif) Définit les emplacements préférés (régions) pour les comptes de base de données géorépliqués dans le service Azure Cosmos DB. Les valeurs doivent être séparées par des virgules. Par exemple, « USA Est, USA Centre Sud, Europe Nord ». |
Décorateurs
Applies uniquement au modèle de programmation Python v2.
Pour Python fonctions v2 définies à l’aide d’un décorateur, la cosmos_db_trigger (extension 4.x) prend en charge les propriétés suivantes :
| Propriété | Description |
|---|---|
arg_name |
Nom de variable utilisé dans le code de fonction, qui représente la liste des documents modifiés. |
database_name |
Nom de la base de données Azure Cosmos DB. Prend en charge %VAR_NAME% la syntaxe pour référencer les paramètres d’application. |
container_name |
Nom du conteneur Azure Cosmos DB surveillé. Prend en charge %VAR_NAME% la syntaxe. |
connection |
Nom d’un paramètre d’application ou préfixe de paramètre pour les connexions basées sur l’identité (par exemple, COSMOS_CONNECTION résout sur COSMOS_CONNECTION__accountEndpoint, etc.). |
lease_container_name |
Nom du conteneur utilisé pour stocker les baux. |
create_lease_container_if_not_exists |
Quand true, crée automatiquement le conteneur de bail s’il n’existe pas. |
Pour Python fonctions définies à l’aide de function.json, consultez la section Configuration.
Annotations
En raison des modifications de schéma dans le SDK Azure Cosmos DB, la version 4.x de l’extension Azure Cosmos DB nécessite azure-functions-java-library V3.0.0 pour les fonctions Java.
Utilisez l’annotation @CosmosDBTrigger sur les paramètres qui lisent les données de Azure Cosmos DB. L’annotation prend en charge les propriétés suivantes :
| Propriété d’attribut | Description |
|---|---|
| connection | Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie comment se connecter au compte Azure Cosmos DB en cours d’analyse. Pour plus d’informations, consultez Connexions. |
| nom | Nom de la fonction. |
| databaseName | Nom de la base de données Azure Cosmos DB avec le conteneur surveillé. |
| containerName | Nom du conteneur surveillé. |
| leaseConnectionStringSetting | (Facultatif) Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie comment se connecter au compte Azure Cosmos DB qui contient le conteneur de bail. S’il n’est pas défini, la valeur connection est utilisée. Ce paramètre est automatiquement défini lorsque la liaison est créée dans le portail. Les chaîne de connexion pour le conteneur de baux doivent disposer d’autorisations d’écriture. |
| leaseDatabaseName | (Facultatif) Nom de la base de données contenant le conteneur utilisé pour stocker des baux. S’il n’est pas défini, la valeur du paramètre databaseName est utilisée. |
| leaseContainerName | (Facultatif) Nom du conteneur utilisé pour stocker des baux. S’il n’est pas défini, la valeur leases est utilisée. |
| createLeaseContainerIfNotExists | (Facultatif) Lorsque la valeur est définie sur true, le conteneur de baux est créé automatiquement s’il n’existe pas. La valeur par défaut est false. Lorsque vous utilisez des identités Microsoft Entra si vous définissez la valeur sur true, la création de conteneurs n'est pas 'opération autorisée et votre application de fonction n'est pas autorisée à démarrer. |
| leasesContainerThroughput | (Facultatif) Définit le nombre d’unités de requête à attribuer lors de la création du conteneur de baux. Ce paramètre est utilisé uniquement quand CreateLeaseContainerIfNotExists est défini sur true. Ce paramètre est automatiquement défini lors de la création de la liaison à l’aide du portail. |
| leaseContainerPrefix | (Facultatif) Lorsque cette valeur est définie, elle est ajoutée en tant que préfixe aux baux créés dans le conteneur de baux pour cette fonction. L’utilisation d’un préfixe permet à deux Azure Functions distincts de partager le même conteneur de baux à l’aide de préfixes différents. |
| feedPollDelay | (Facultatif) Durée (en millisecondes) du délai s’écoulant entre le moment où toutes les modifications d’une partition sont purgées du flux et le moment où la partition est interrogée afin d’identifier de nouvelles modifications. La valeur par défaut est 5 000 millisecondes, soit 5 secondes. |
| leaseAcquireInterval | (Facultatif) Quand ce paramètre est défini, il spécifie, en millisecondes, l’intervalle pour déclencher une tâche afin de calculer si les partitions sont réparties uniformément parmi les instances d’hôte connues. La valeur par défaut est 13 000 (13 secondes). |
| leaseExpirationInterval | (Facultatif) Quand ce paramètre est défini, il spécifie, en millisecondes, l’intervalle selon lequel le bail est pris sur un bail représentant une partition. Si le bail n’est pas renouvelé dans cet intervalle, il expire et la propriété de la partition passe à une autre instance. La valeur par défaut est 60 000 (60 secondes). |
| leaseRenewInterval | (Facultatif) Quand elle est définie, elle définit, en millisecondes, l’intervalle de renouvellement pour tous les baux pour les partitions actuellement détenues par une instance. La valeur par défaut est 17 000 (17 secondes). |
| maxItemsPerInvocation | (Facultatif) Quand cette propriété est définie, elle détermine le nombrer maximal d’éléments reçus par appel de fonction. Si des opérations du conteneur analysé sont effectuées par le biais de procédures stockées, l’étendue de transaction est préservée lors de la lecture des éléments à partir du flux de modification. Par conséquent, le nombre d’éléments reçus pourrait être supérieur à la valeur spécifiée de sorte que les éléments modifiés par la même transaction soient retournés dans le cadre d’un même lot atomique. |
| startFromBeginning | (Facultatif) Cette option indique au déclencheur de lire les modifications depuis le début de l’historique de modifications du conteneur au lieu de commencer à l’heure actuelle. La lecture depuis le début fonctionne uniquement au premier démarrage du déclencheur, car, lors des exécutions suivantes, les points de contrôle sont déjà stockés. La définition de cette option sur true quand des baux ont déjà été créés est sans effet. |
| preferredLocations | (Facultatif) Définit les emplacements préférés (régions) pour les comptes de base de données géorépliqués dans le service Azure Cosmos DB. Les valeurs doivent être séparées par des virgules. Par exemple : East US,South Central US,North Europe. |
Configuration
Applies uniquement au modèle de programmation Python v1.
Le tableau suivant décrit les propriétés de configuration de la liaison que vous définissez dans le fichier function.json, où les propriétés diffèrent selon la version de l’extension :
| Propriété function.json | Description |
|---|---|
| type | Cette propriété doit être définie sur cosmosDBTrigger. |
| direction | Cette propriété doit être définie sur in. Ce paramètre est défini automatiquement lorsque vous créez le déclencheur dans le portail Azure. |
| nom | Nom de variable utilisé dans le code de fonction, qui représente la liste des documents modifiés. |
| connection | Nom d’un paramètre d’application ou d’une collection de paramètres qui spécifie comment se connecter au compte Azure Cosmos DB en cours d’analyse. Pour plus d’informations, consultez Connexions. |
| databaseName | Nom de la base de données Azure Cosmos DB avec le conteneur surveillé. |
| containerName | Nom du conteneur surveillé. |
| leaseConnection | (Facultatif) Nom d’un paramètre d’application ou d’un conteneur de paramètres qui spécifie comment se connecter au compte Azure Cosmos DB qui contient le conteneur de bail. S’il n’est pas défini, la valeur connection est utilisée. Ce paramètre est automatiquement défini lorsque la liaison est créée dans le portail. Les chaîne de connexion pour le conteneur de baux doivent disposer d’autorisations d’écriture. |
| leaseDatabaseName | (Facultatif) Nom de la base de données contenant le conteneur utilisé pour stocker des baux. S’il n’est pas défini, la valeur du paramètre databaseName est utilisée. |
| leaseContainerName | (Facultatif) Nom du conteneur utilisé pour stocker des baux. S’il n’est pas défini, la valeur leases est utilisée. |
| createLeaseContainerIfNotExists | (Facultatif) Lorsque la valeur est définie sur true, le conteneur de baux est créé automatiquement s’il n’existe pas. La valeur par défaut est false. Lorsque vous utilisez des identités Microsoft Entra si vous définissez la valeur sur true, la création de conteneurs n'est pas une opération autorisée et votre fonction ne pourra pas démarrer. |
| leasesContainerThroughput | (Facultatif) Définit le nombre d’unités de requête à attribuer lors de la création du conteneur de baux. Ce paramètre est utilisé uniquement quand createLeaseContainerIfNotExists est défini sur true. Ce paramètre est automatiquement défini lors de la création de la liaison à l’aide du portail. |
| leaseContainerPrefix | (Facultatif) Lorsque cette valeur est définie, elle est ajoutée en tant que préfixe aux baux créés dans le conteneur de baux pour cette fonction. L’utilisation d’un préfixe permet à deux Azure Functions distincts de partager le même conteneur de baux à l’aide de préfixes différents. |
| feedPollDelay | (Facultatif) Durée (en millisecondes) du délai s’écoulant entre le moment où toutes les modifications d’une partition sont purgées du flux et le moment où la partition est interrogée afin d’identifier de nouvelles modifications. La valeur par défaut est 5 000 millisecondes, soit 5 secondes. |
| leaseAcquireInterval | (Facultatif) Quand ce paramètre est défini, il spécifie, en millisecondes, l’intervalle pour déclencher une tâche afin de calculer si les partitions sont réparties uniformément parmi les instances d’hôte connues. La valeur par défaut est 13 000 (13 secondes). |
| leaseExpirationInterval | (Facultatif) Quand ce paramètre est défini, il spécifie, en millisecondes, l’intervalle selon lequel le bail est pris sur un bail représentant une partition. Si le bail n’est pas renouvelé dans cet intervalle, il expire et une autre instance devient propriétaire de la partition. La valeur par défaut est 60 000 (60 secondes). |
| leaseRenewInterval | (Facultatif) Quand ce paramètre est défini, il spécifie, en millisecondes, l’intervalle de renouvellement de tous les baux pour les partitions actuellement détenues par une instance. La valeur par défaut est 17 000 (17 secondes). |
| maxItemsPerInvocation | (Facultatif) Quand cette propriété est définie, elle détermine le nombrer maximal d’éléments reçus par appel de fonction. Si des opérations du conteneur analysé sont effectuées par le biais de procédures stockées, l’étendue de transaction est préservée lors de la lecture des éléments à partir du flux de modification. Par conséquent, le nombre d’éléments reçus pourrait être supérieur à la valeur spécifiée de sorte que les éléments modifiés par la même transaction soient retournés dans le cadre d’un même lot atomique. |
| startFromBeginning | (Facultatif) Cette option indique au déclencheur de lire les modifications depuis le début de l’historique de modifications du conteneur au lieu de commencer à l’heure actuelle. La lecture depuis le début fonctionne uniquement au premier démarrage du déclencheur, car, lors des exécutions suivantes, les points de contrôle sont déjà stockés. La définition de cette option sur true quand des baux ont déjà été créés est sans effet. |
| startFromTime | (Facultatif) Obtient ou définit la date et l’heure à partir desquelles l’opération de lecture du flux de modification doit être initialisée. Le format recommandé est ISO 8601 avec le désignateur UTC, par exemple 2021-02-16T14:19:29Z. Utilisé uniquement pour définir l’état initial du déclencheur. Une fois que le déclencheur a un état de bail, la modification de cette valeur n’a aucun effet. |
| preferredLocations | (Facultatif) Définit les emplacements préférés (régions) pour les comptes de base de données géorépliqués dans le service Azure Cosmos DB. Les valeurs doivent être séparées par des virgules. Par exemple, « USA Est, USA Centre Sud, Europe Nord ». |
Pour obtenir des exemples complets, consultez la section Exemple.
Usage
Le déclencheur nécessite une deuxième collection qu’il utilise pour stocker des baux sur les partitions. Le déclencheur fonctionne uniquement si la collection que vous surveillez et la collection qui contient les baux sont disponibles.
Important
Si vous configurez plusieurs fonctions pour utiliser un déclencheur Azure Cosmos DB pour la même collection, chaque fonction doit utiliser une collection de baux dédiée ou spécifier un LeaseCollectionPrefix différent pour chaque fonction. Sinon, une seule des fonctions est déclenchée. Pour plus d’informations sur le préfixe, consultez la section Attributs.
Important
Si vous configurez plusieurs fonctions pour utiliser un déclencheur Azure Cosmos DB pour la même collection, chaque fonction doit utiliser une collection de baux dédiée ou spécifier un leaseCollectionPrefix différent pour chaque fonction. Sinon, une seule des fonctions est déclenchée. Pour plus d’informations sur le préfixe, consultez la section Annotations.
Important
Si vous configurez plusieurs fonctions pour utiliser un déclencheur Azure Cosmos DB pour la même collection, chaque fonction doit utiliser une collection de baux dédiée ou spécifier un leaseCollectionPrefix différent pour chaque fonction. Sinon, une seule des fonctions est déclenchée. Pour plus d’informations sur le préfixe, consultez la section Configuration.
Le déclencheur n’indique pas si un document a été mis à jour ou inséré. Il fournit simplement le document lui-même. Si vous devez gérer les mises à jour et les insertions différemment, implémentez des champs d’horodatage pour l’insertion ou la mise à jour.
Le type de paramètre pris en charge par le déclencheur Azure Cosmos DB dépend de la version du runtime Functions, de la version du package d’extension et de la modalité C# utilisée.
Quand vous souhaitez que la fonction traite un seul document, le déclencheur Cosmos DB peut se lier aux types suivants :
| Type | Description |
|---|---|
| Types sérialisables JSON | Functions tente de désérialiser les données JSON du document à partir du flux de modification Cosmos DB dans un type d’objet CLR traditionnel (OCT). |
Quand vous souhaitez que la fonction traite un lot de documents, le déclencheur Cosmos DB peut se lier aux types suivants :
| Type | Description |
|---|---|
IEnumerable<T>where T est un type sérialisable JSON |
Énumération des entités incluses dans le lot. Chaque entrée représente un document du flux de modification Cosmos DB. |
Connexions
Les connection propriétés et leaseConnection sont définies sur des clés dans les paramètres d’application qui retournent les valeurs utilisées par l’exécution Functions pour se connecter aux points de terminaison du compte Azure Cosmos DB utilisés par l’extension. La valeur de ces paramètres de propriété dépend du type de connexion :
-
Connexion d’identité gérée : La
connectionpropriété est<CONNECTION_NAME_PREFIX>partagée par un groupe de paramètres qui définissent ensemble une connexion basée sur l’identité avec le compte. Pour plus d’informations, voir Définir les connexions identités. -
Référence Key Vault : Le
connectionparamètre de propriété renvoie une référence Azure Key Vault à l’emplacement où la chaîne de connexion est centralisée. Pour plus d’informations, voir Définir les connexions Key Vault. -
Référence App Configuration : Le
connectionparamètre de propriété renvoie une référence Azure App Configuration qui renvoie une chaîne de connexion ou une référence Key Vault. Pour plus d’informations, consultez Azure App Configuration dans l’article sur les connexions. -
Connection string : Le
connectionréglage de propriété renvoie la chaîne de connexion réelle du compte. Parce que la chaîne de connexion contient des clés secrètes partagées, vous devriez envisager d’utiliser une connexion d’identité gérée, lorsque c’est possible. Pour plus d’informations, voir Définir les connexions.
Pour en savoir plus sur les connexions de liaisons, consultez Gérer la connexion dans Azure Functions. Pour obtenir une chaîne de connexion, allez dans votre compte Azure Cosmos DB, sélectionnez Clés, puis copiez les valeurs de PRIMARY CONNECTION STRING ou SECONDARY CONNECTION STRING. Ces chaînes de connexion contiennent des clés secrètes partagées et doivent être sécurisées.
Dans les versions antérieures de l’extension, les propriétés de connexion étaient nommées connectionStringSetting et leaseConnectionStringSetting.