Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Azure Cosmos DB-utdatabindningen kan du skriva ett nytt dokument till en Azure Cosmos DB databas med hjälp av SQL-API:et.
Information om konfiguration och konfigurationsinformation finns i översikten.
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 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 din Python funktionskod. Mer information finns i utvecklarguiden Python.
Den här artikeln stöder båda programmeringsmodellerna.
En C#-funktion kan skapas med något av följande C#-lägen:
-
Isolerad arbetsmodell: Kompilerad C#-funktion som körs i en arbetsprocess som är isolerad från körningen. Isolerad arbetsprocess krävs för att stödja C#-funktioner som körs på LTS- och icke-LTS-versioner .NET och .NET Framework. Tillägg för isolerade arbetsprocessfunktioner använder
Microsoft.Azure.Functions.Worker.Extensions.*namnområden. -
Processmodell: Kompilerad C#-funktion som körs i samma process som Functions-körningen. I en variant av den här modellen kan Functions köras med C#-skript, vilket främst stöds för redigering av C#-portalen. Tillägg för processfunktioner använder
Microsoft.Azure.WebJobs.Extensions.*namnområden.
Viktigt!
Supporten upphör för den pågående modellen den 10 november 2026. Vi rekommenderar starkt att du migrerar dina appar till den isolerade arbetsmodellen för fullt stöd.
Exempel
Om inget annat anges kan exempel i den här artikeln vara målversion 3.x av tillägget Azure Cosmos DB. För användning med tilläggsversion 4.x måste du ersätta strängen collection i egenskaps- och attributnamn med container och connection_string_setting med connection.
Go-stöd finns för närvarande inte tillgängligt för denna bindning.
Följande kod definierar en MyDocument typ:
I följande exempel är returtypen en IReadOnlyList<T>, som är en ändrad lista över dokument från utlösarbindningsparametern:
- Köutlösare, spara meddelande till databasen via returvärde
- HTTP-utlösare, spara ett dokument i databasen via returvärde
- HTTP-utlösare, spara ett dokument i databasen via OutputBinding
- HTTP-utlösare, spara flera dokument i databasen via OutputBinding
Köutlösare, spara meddelande till databasen via returvärde
I följande exempel visas en Java funktion som lägger till ett dokument i en databas med data från ett meddelande i Queue Storage.
@FunctionName("getItem")
@CosmosDBOutput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
connectionStringSetting = "AzureCosmosDBConnection")
public String cosmosDbQueryById(
@QueueTrigger(name = "msg",
queueName = "myqueue-items",
connection = "AzureWebJobsStorage")
String message,
final ExecutionContext context) {
return "{ id: \"" + System.currentTimeMillis() + "\", Description: " + message + " }";
}
HTTP-utlösare, spara ett dokument i databasen via returvärde
I följande exempel visas en Java funktion vars signatur kommenteras med @CosmosDBOutput och har returvärde av typen String. JSON-dokumentet som returneras av funktionen skrivs automatiskt till motsvarande Azure Cosmos DB samling.
@FunctionName("WriteOneDoc")
@CosmosDBOutput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
connectionStringSetting = "Cosmos_DB_Connection_String")
public String run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
final ExecutionContext context) {
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
// Parse query parameter
String query = request.getQueryParameters().get("desc");
String name = request.getBody().orElse(query);
// Generate random ID
final int id = Math.abs(new Random().nextInt());
// Generate document
final String jsonDocument = "{\"id\":\"" + id + "\", " +
"\"description\": \"" + name + "\"}";
context.getLogger().info("Document to be saved: " + jsonDocument);
return jsonDocument;
}
HTTP-utlösare, spara ett dokument i databasen via OutputBinding
I följande exempel visas en Java funktion som skriver ett dokument till Azure Cosmos DB via en OutputBinding<T> utdataparameter. I det här exemplet måste parametern outputItem kommenteras med @CosmosDBOutput, inte funktionssignaturen. Med hjälp av OutputBinding<T> kan funktionen dra nytta av bindningen för att skriva dokumentet till Azure Cosmos DB samtidigt som du kan returnera ett annat värde till funktionsanroparen, till exempel ett JSON- eller XML-dokument.
@FunctionName("WriteOneDocOutputBinding")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@CosmosDBOutput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
connectionStringSetting = "Cosmos_DB_Connection_String")
OutputBinding<String> outputItem,
final ExecutionContext context) {
// Parse query parameter
String query = request.getQueryParameters().get("desc");
String name = request.getBody().orElse(query);
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
// Generate random ID
final int id = Math.abs(new Random().nextInt());
// Generate document
final String jsonDocument = "{\"id\":\"" + id + "\", " +
"\"description\": \"" + name + "\"}";
context.getLogger().info("Document to be saved: " + jsonDocument);
// Set outputItem's value to the JSON document to be saved
outputItem.setValue(jsonDocument);
// return a different document to the browser or calling client.
return request.createResponseBuilder(HttpStatus.OK)
.body("Document created successfully.")
.build();
}
HTTP-utlösare, spara flera dokument i databasen via OutputBinding
I följande exempel visas en Java funktion som skriver flera dokument till Azure Cosmos DB via en OutputBinding<T>-utdataparameter. I det här exemplet kommenteras parametern outputItem med @CosmosDBOutput, inte funktionssignaturen. Utdataparametern outputItem har en lista med ToDoItem objekt som mallparametertyp. Med OutputBinding<T> kan funktionen dra nytta av bindningen för att skriva dokumenten till Azure Cosmos DB samtidigt som du kan returnera ett annat värde till funktionsanroparen, till exempel ett JSON- eller XML-dokument.
@FunctionName("WriteMultipleDocsOutputBinding")
public HttpResponseMessage run(
@HttpTrigger(name = "req",
methods = {HttpMethod.GET, HttpMethod.POST},
authLevel = AuthorizationLevel.ANONYMOUS)
HttpRequestMessage<Optional<String>> request,
@CosmosDBOutput(name = "database",
databaseName = "ToDoList",
collectionName = "Items",
connectionStringSetting = "Cosmos_DB_Connection_String")
OutputBinding<List<ToDoItem>> outputItem,
final ExecutionContext context) {
// Parse query parameter
String query = request.getQueryParameters().get("desc");
String name = request.getBody().orElse(query);
// Item list
context.getLogger().info("Parameters are: " + request.getQueryParameters());
// Generate documents
List<ToDoItem> items = new ArrayList<>();
for (int i = 0; i < 5; i ++) {
// Generate random ID
final int id = Math.abs(new Random().nextInt());
// Create ToDoItem
ToDoItem item = new ToDoItem(String.valueOf(id), name);
items.add(item);
}
// Set outputItem's value to the list of POJOs to be saved
outputItem.setValue(items);
context.getLogger().info("Document to be saved: " + items);
// return a different document to the browser or calling client.
return request.createResponseBuilder(HttpStatus.OK)
.body("Documents created successfully.")
.build();
}
I Java functions runtime-biblioteket använder du @CosmosDBOutput-kommentaren på parametrar som skrivs till Azure Cosmos DB. Anteckningsparametertypen ska vara OutputBinding<T>, där T antingen är en inbyggd Java typ eller en POJO.
I följande exempel visas en utlös TypeScript-funktion i lagringskö för en kö som tar emot JSON i följande format:
{
"name": "John Henry",
"employeeId": "123456",
"address": "A town nearby"
}
Funktionen skapar Azure Cosmos DB dokument i följande format för varje post:
{
"id": "John Henry-123456",
"name": "John Henry",
"employeeId": "123456",
"address": "A town nearby"
}
Här är TypeScript-koden:
Om du vill mata ut flera dokument returnerar du en matris i stället för ett enda objekt. Till exempel:
I följande exempel visas en javaScript-funktion som utlöses av en lagringskö för en kö som tar emot JSON i följande format:
{
"name": "John Henry",
"employeeId": "123456",
"address": "A town nearby"
}
Funktionen skapar Azure Cosmos DB dokument i följande format för varje post:
{
"id": "John Henry-123456",
"name": "John Henry",
"employeeId": "123456",
"address": "A town nearby"
}
Här är JavaScript-koden:
Om du vill mata ut flera dokument returnerar du en matris i stället för ett enda objekt. Till exempel:
I följande exempel visas hur du skriver data till Azure Cosmos DB med hjälp av en utdatabindning. Bindningen deklareras i funktionens konfigurationsfil (functions.json) och tar data från ett kömeddelande och skriver ut till ett Azure Cosmos DB dokument.
{
"name": "EmployeeDocument",
"type": "cosmosDB",
"databaseName": "MyDatabase",
"collectionName": "MyCollection",
"createIfNotExists": true,
"connectionStringSetting": "MyStorageConnectionAppSetting",
"direction": "out"
}
I filen run.ps1 mappas objektet som returneras från funktionen till ett EmployeeDocument objekt som sparas i databasen.
param($QueueItem, $TriggerMetadata)
Push-OutputBinding -Name EmployeeDocument -Value @{
id = $QueueItem.name + '-' + $QueueItem.employeeId
name = $QueueItem.name
employeeId = $QueueItem.employeeId
address = $QueueItem.address
}
I följande exempel visas hur du skriver ett dokument till en Azure Cosmos DB databas som utdata för en funktion. Exemplet beror på om du använder programmeringsmodellen v1 eller v2 Python.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.route()
@app.cosmos_db_output(arg_name="documents",
database_name="DB_NAME",
collection_name="COLLECTION_NAME",
create_if_not_exists=True,
connection_string_setting="CONNECTION_SETTING")
def main(req: func.HttpRequest, documents: func.Out[func.Document]) -> func.HttpResponse:
request_body = req.get_body()
documents.set(func.Document.from_json(request_body))
return 'OK'
Attribut
C#-bibliotek i både processprocess och isolerad arbetsprocess använder attribut 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. |
| CreateIfNotExists | Ett booleskt värde som anger om containern skapas när den inte finns. Standardvärdet är falskt eftersom nya containrar skapas med reserverat dataflöde, vilket har kostnadskonsekvenser. Mer information, se prissidan. |
| PartitionKey | När CreateIfNotExists är sant definierar den partitionsnyckelsökvägen för den skapade containern. Kan innehålla bindningsparametrar. |
| ContainerThroughput | När CreateIfNotExists är sant definierar det dataflödet för den skapade containern. |
| PreferredLocations | (Valfritt) Definierar önskade platser (regioner) för geo-replikerade databaskonton i Azure Cosmos DB-tjänsten. Värden bör kommaavgränsas. Exempel: East US,South Central US,North Europe |
Dekoratörer
Applies endast till programmeringsmodellen Python v2.
För Python v2-funktioner som definierats med hjälp av en dekoratör, följande egenskaper på cosmos_db_output:
| Fastighet | 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 containern som övervakas. |
container_name |
Namnet på den Azure Cosmos DB container som övervakas. |
create_if_not_exists |
Ett booleskt värde som anger om databasen och samlingen ska skapas om de inte finns. |
connection_string_setting |
Connection string för Azure Cosmos DB som övervakas. |
Information om Python funktioner som definieras med hjälp av function.json finns i avsnittet Configuration.
Kommentarer
Från Java functions runtime-biblioteket använder du @CosmosDBOutput kommentar på parametrar som skriver till Azure Cosmos DB. Kommentaren stöder följande egenskaper:
Konfiguration
Applies endast till 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 |
|---|---|
| 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. |
| createIfNotExists | Ett booleskt värde som anger om containern skapas när den inte finns. Standardvärdet är falskt eftersom nya containrar skapas med reserverat dataflöde, vilket har kostnadskonsekvenser. Mer information, se prissidan. |
| partitionKey | När createIfNotExists är sant definierar den partitionsnyckelsökvägen för den skapade containern. Kan innehålla bindningsparametrar. |
| containerThroughput | När createIfNotExists är sant definierar det dataflödet för den skapade containern. |
| preferredLocations | (Valfritt) Definierar önskade platser (regioner) för geo-replikerade databaskonton i Azure Cosmos DB-tjänsten. Värden bör kommaavgränsas. Exempel: East US,South Central US,North Europe |
Se avsnittet Exempel för fullständiga exempel.
Förbrukning
När du skriver till utdataparametern i funktionen skapas som standard ett dokument i databasen. Du bör ange dokument-ID för utdatadokumentet genom att id ange egenskapen i JSON-objektet som skickas till utdataparametern.
Kommentar
När du anger ID för ett befintligt dokument skrivs det över av det nya utdatadokumentet.
Utdatafunktionsparametern måste definieras som func.Out[func.Document]. Mer information finns i utdataexemplet .
Parametertypen som stöds av Cosmos DB-utdatabindningen beror på functions-körningsversionen, tilläggspaketversionen och den C#-modalitet som används.
När du vill att funktionen ska skriva till ett enda dokument kan Cosmos DB-utdatabindningen binda till följande typer:
| Typ | beskrivning |
|---|---|
| JSON-serialiserbara typer | Ett objekt som representerar JSON-innehållet i ett dokument. Functions försöker serialisera en vanlig CLR-objekttyp (POCO) till JSON-data. |
När du vill att funktionen ska skriva till flera dokument kan Cosmos DB-utdatabindningen binda till följande typer:
| Typ | beskrivning |
|---|---|
T[] där T är JSON serializable type |
En matris som innehåller flera dokument. Varje post representerar ett dokument. |
För andra utdatascenarier skapar och använder du en CosmosClient med andra typer från Microsoft.Azure. Cosmos direkt. Se Register Azure-klienter för ett exempel på hur du använder beroendeinmatning för att skapa en klienttyp från Azure SDKs.
anslutningar
Och connection egenskaperna leaseConnection är satta till nycklar i applikationsinställningar som returnerar värden som används av Functions-runtime för att ansluta till Azure Cosmos DB-kontots ändpunkter som används av tillägget. Värdet på dessa egenskapsinställningar beror på typen av anslutning:
-
Managed identity-anslutning: Egenskapen
connection<CONNECTION_NAME_PREFIX>delas av en grupp inställningar som tillsammans definierar en identitetsbaserad anslutning till kontot. För mer information, se Definiera identitetskopplingar. -
Key Vault-referens: Egendomsinställningen
connectionreturnerar en Azure Key Vault-referens till platsen där reťazec pripojenia underhålls centralt. För mer information, se Definiera Key Vault-anslutningar. -
App Configuration Reference: Egenskapsinställningen
connectionreturnerar en Azure App Configuration-referens som returnerar en reťazec pripojenia eller en Key Vault-referens. För mer information, se Azure App Configuration i artikeln om anslutningar. -
Connection string: Egenskapsinställningen
connectionreturnerar den faktiska kontots reťazec pripojenia. Eftersom reťazec pripojenia innehåller delade hemliga nycklar bör du överväga att använda en managed identity-anslutning när det är möjligt. För mer information, se Definiera kopplingar.
För att lära dig mer om bindningsanslutningar, se Hantera anslutning i Azure Functions. För att hämta en reťazec pripojenia, gå till ditt Azure Cosmos DB-konto, välj Keys och kopiera sedan värdena PRIMARY CONNECTION STRING eller SECONDARY CONNECTION STRING. Dessa anslutningssträngar innehåller delade hemliga nycklar och måste hållas säkra.
I tidigare versioner av tillägget namngavs connectionStringSetting anslutningsegenskaperna och leaseConnectionStringSetting.
Undantag och returkoder
| Bindning | Referens |
|---|---|
| Azure Cosmos DB | HTTP-statuskoder för Azure Cosmos DB |