Azure Cosmos DB trigger and bindings for Azure Functions 2.x and higher overview
This set of articles explains how to work with Azure Cosmos DB bindings in Azure Functions 2.x and higher. Azure Functions supports trigger, input, and output bindings for Azure Cosmos DB.
Action | Type |
---|---|
Run a function when an Azure Cosmos DB document is created or modified | Trigger |
Read an Azure Cosmos DB document | Input binding |
Save changes to an Azure Cosmos DB document | Output binding |
Note
This reference is for Azure Functions version 2.x and higher. For information about how to use these bindings in Functions 1.x, see Azure Cosmos DB bindings for Azure Functions 1.x.
This binding was originally named DocumentDB. In Azure Functions version 2.x and higher, the trigger, bindings, and package are all named Azure Cosmos DB.
Azure Cosmos DB bindings are only supported for use with Azure Cosmos DB for NoSQL. Support for Azure Cosmos DB for Table is provided by using the Table storage bindings, starting with extension 5.x. For all other Azure Cosmos DB APIs, you should access the database from your function by using the static client for your API, including Azure Cosmos DB for MongoDB, Azure Cosmos DB for Cassandra, and Azure Cosmos DB for Apache Gremlin.
The extension NuGet package you install depends on the C# mode you're using in your function app:
Important
Support will end for the in-process model on November 10, 2026. We highly recommend that you migrate your apps to the isolated worker model for full support.
Functions execute in the same process as the Functions host. To learn more, see Develop C# class library functions using Azure Functions.
In a variation of this model, Functions can be run using C# scripting, which is supported primarily for C# portal editing. To update existing binding extensions for C# script apps running in the portal without having to republish your function app, see Update your extensions.
The process for installing the extension varies depending on the extension version:
This section describes using a class library. For C# scripting, you would need to instead install the extension bundle, version 4.x.
This version of the Azure Cosmos DB bindings extension introduces the ability to connect using an identity instead of a secret. For a tutorial on configuring your function apps with managed identities, see the creating a function app with identity-based connections tutorial.
This version also changes the types that you can bind to, replacing the types from the v2 SDK Microsoft.Azure.DocumentDB
with newer types from the v3 SDK Microsoft.Azure.Cosmos. Learn more about how these new types are different and how to migrate to them from the SDK migration guide, trigger, input binding, and output binding examples.
This extension version is available as a NuGet package, version 4.x.
The Azure Cosmos DB bindings extension is part of an extension bundle, which is specified in your host.json project file. You may need to modify this bundle to change the version of the binding, or if bundles aren't already installed. To learn more, see extension bundle.
Because of schema changes in the Azure Cosmos DB SDK, version 4.x of the Azure Cosmos DB extension requires azure-functions-java-library V3.0.0 for Java functions.
This version of the bundle contains version 4.x of the Azure Cosmos DB bindings extension that introduces the ability to connect using an identity instead of a secret. For a tutorial on configuring your function apps with managed identities, see the creating a function app with identity-based connections tutorial.
You can add this version of the extension from the preview extension bundle v4 by adding or replacing the following code in your host.json
file:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.0.0, 5.0.0)"
}
}
To learn more, see Update your extensions.
The binding types supported for .NET depend on both the extension version and C# execution mode, which can be one of the following:
An in-process class library is a compiled C# function runs in the same process as the Functions runtime.
Choose a version to see binding type details for the mode and version.
The Azure Cosmos DB extension supports parameter types according to the table below.
Binding scenario | Parameter types |
---|---|
Cosmos DB trigger (single document) | JSON serializable types1 |
Cosmos DB trigger (batch of documents) | IEnumerable<T> where T is a JSON serializable type1 |
Cosmos DB input (single document) | JSON serializable types1 |
Cosmos DB input (query returning multiple documents) | CosmosClientIEnumerable<T> where T is a JSON serializable type1 |
Cosmos DB output (single document) | JSON serializable types1 |
Cosmos DB output (multiple documents) | ICollector<T> or IAsyncCollector<T> where T is a JSON serializable type1 |
1 Documents containing JSON data can be deserialized into known plain-old CLR object (POCO) types.
Binding | Reference |
---|---|
Azure Cosmos DB | HTTP status codes for Azure Cosmos DB |
This section describes the configuration settings available for this binding in versions 2.x and higher. Settings in the host.json file apply to all functions in a function app instance. The example host.json file below contains only the version 2.x+ settings for this binding. For more information about function app configuration settings in versions 2.x and later versions, see host.json reference for Azure Functions.
{
"version": "2.0",
"extensions": {
"cosmosDB": {
"connectionMode": "Gateway",
"userAgentSuffix": "MyDesiredUserAgentStamp"
}
}
}
Property | Default | Description |
---|---|---|
connectionMode | Gateway |
The connection mode used by the function when connecting to the Azure Cosmos DB service. Options are Direct and Gateway |
userAgentSuffix | n/a | Adds the specified string value to all requests made by the trigger or binding to the service. This makes it easier for you to track the activity in Azure Monitor, based on a specific function app and filtering by User Agent . |