Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze reeks artikelen wordt uitgelegd hoe u kunt werken met Azure Cosmos DB-bindingen in Azure Functions. Azure Functions ondersteunt trigger-, invoer- en uitvoerbindingen voor Azure Cosmos DB.
| Actie | Typologie |
|---|---|
| Een functie uitvoeren wanneer een Azure Cosmos DB-document wordt gemaakt of gewijzigd | Trekker |
| Een Azure Cosmos DB-document lezen | Invoerbinding |
| Wijzigingen opslaan in een Azure Cosmos DB-document | Uitvoerbinding |
Belangrijk
Deze versie van de Azure Cosmos DB-bindingsextensie ondersteunt Azure Functions versie 4.x. Als uw app nog steeds versie 1.x van de Functions-runtime gebruikt, raadpleegt u in plaats daarvan Azure Cosmos DB-bindingen voor Azure Functions 1.x.
In de Functions v1.x-runtime is deze binding oorspronkelijk benoemd DocumentDB.
Ondersteunde API's
In deze tabel wordt aangegeven hoe u verbinding maakt met de verschillende Azure Cosmos DB-API's vanuit uw functiecode:
| API | Aanbeveling |
|---|---|
| Azure Cosmos DB voor NoSQL | De Azure Cosmos DB-bindingsextensie gebruiken |
| Azure Cosmos DB voor MongoDB (vCore) | Gebruik de Azure Cosmos DB voor MongoDB-bindingsextensie, die momenteel in preview is. |
| Azure Cosmos DB voor tabel | Gebruik versie 5.x of hoger van de Azure Tables-bindingsextensie. |
| Azure Cosmos DB voor Apache Cassandra | Gebruik een systeemeigen client-SDK. |
| Azure Cosmos DB voor Apache Gremlin (Graph API) | Een systeemeigen client-SDK gebruiken |
| Azure Cosmos DB for PostgreSQL | Gebruik een systeemeigen client-SDK. |
De extensie installeren
Het NuGet-extensiepakket dat u installeert, is afhankelijk van de C#-modus die u gebruikt in uw functie-app:
Functies worden uitgevoerd in een geïsoleerd C#-werkproces. Zie De handleiding voor het uitvoeren van C# Azure Functions in een geïsoleerd werkproces voor meer informatie.
Het proces voor het installeren van de extensie varieert afhankelijk van de extensieversie:
Deze versie van de Azure Cosmos DB bindings-extensie introduceert de mogelijkheid om verbinding te maken met behulp van een identiteit in plaats van een geheim. Zie de zelfstudie over het maken van een functie-app met op identiteit gebaseerde verbindingen voor een zelfstudie over het configureren van uw functie-apps met beheerde identiteiten.
Voeg de extensie toe aan uw project door het NuGet-pakket versie 4.x te installeren.
Als u uw toepassing schrijft met F#, moet u deze extensie ook configureren als onderdeel van de opstartconfiguratie van de app. Voeg in de aanroep naar ConfigureFunctionsWorkerDefaults() of ConfigureFunctionsWebApplication()een gemachtigde toe die een IFunctionsWorkerApplication parameter gebruikt. Roep vervolgens binnen de hoofdtekst van die gemachtigde ConfigureCosmosDBExtension() het object aan:
let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
appBuilder.ConfigureCosmosDBExtension() |> ignore
) |> ignore
Bundel installeren
Als u deze bindingsextensie in uw app wilt kunnen gebruiken, moet u ervoor zorgen dat het host.json bestand in de hoofdmap van uw project deze extensionBundle verwijzing bevat:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
In dit voorbeeld geeft de version waarde van [4.0.0, 5.0.0) de Functions-host opdracht om een bundelversie te gebruiken die ten minste 4.0.0 maar kleiner is dan 5.0.0, die alle mogelijke versies van 4.x bevat. Deze notatie onderhoudt uw app effectief op de nieuwste beschikbare secundaire versie van de v4.x-extensiebundel.
Indien mogelijk moet u de meest recente primaire versie van de extensiebundel gebruiken en toestaan dat de runtime automatisch de meest recente secundaire versie onderhoudt. U kunt de inhoud van de meest recente bundel bekijken op de releasepagina voor extensiebundels. Zie Azure Functions-extensiebundels voor meer informatie.
Vanwege schemawijzigingen in de Azure Cosmos DB SDK vereist versie 4.x van de Azure Cosmos DB-extensie azure-functions-java-library V3.0.0 voor Java-functies.
Bindingstypen
De bindingstypen die worden ondersteund voor .NET zijn afhankelijk van zowel de extensieversie als de C#-uitvoeringsmodus. Dit kan een van de volgende zijn:
Een geïsoleerde werkprocesklassebibliotheek gecompileerde C#-functie wordt uitgevoerd in een proces dat is geïsoleerd van de runtime.
Kies een versie om de details van het bindingstype voor de modus en versie weer te geven.
Het geïsoleerde werkproces ondersteunt parametertypen volgens de onderstaande tabellen. Ondersteuning voor binding met typen van Microsoft.Azure.Cosmosis in preview.
Cosmos DB-trigger
Wanneer u wilt dat de functie één document verwerkt, kan de Cosmos DB-trigger worden gekoppeld aan de volgende typen:
| Typologie | Beschrijving |
|---|---|
| JSON serialiseerbare typen | Functions probeert de JSON-gegevens van het document uit de Cosmos DB-wijzigingenfeed te deserialiseren naar een poCO-type (plain-old CLR object). |
Wanneer u wilt dat de functie een batch documenten verwerkt, kan de Cosmos DB-trigger verbinding maken met de volgende typen:
| Typologie | Beschrijving |
|---|---|
IEnumerable<T>waarbij T een type JSON serialiseerbaar is |
Een opsomming van entiteiten die zijn opgenomen in de batch. Elke vermelding vertegenwoordigt één document uit de Cosmos DB-wijzigingenfeed. |
Cosmos DB-invoerbinding
Wanneer u wilt dat de functie één document verwerkt, kan de Cosmos DB-invoerbinding worden gekoppeld aan de volgende typen:
| Typologie | Beschrijving |
|---|---|
| JSON serialiseerbare typen | Functions probeert de JSON-gegevens van het document te deserialiseren in een niet-oud CLR-objecttype (POCO). |
Wanneer u wilt dat de functie meerdere documenten uit een query verwerkt, kan de Cosmos DB-invoerbinding worden gekoppeld aan de volgende typen:
| Typologie | Beschrijving |
|---|---|
IEnumerable<T>waarbij T een type JSON serialiseerbaar is |
Een opsomming van entiteiten die door de query worden geretourneerd. Elke vermelding vertegenwoordigt één document. |
| CosmosClient1 | Een client die is verbonden met het Cosmos DB-account. |
| Database1 | Een client die is verbonden met de Cosmos DB-database. |
| Container1 | Een client die is verbonden met de Cosmos DB-container. |
1 Als u deze typen wilt gebruiken, moet u verwijzen naar Microsoft.Azure.Functions.Worker.Extensions.CosmosDB 4.4.0 of hoger en de algemene afhankelijkheden voor SDK-typebindingen.
Cosmos DB-uitvoerbinding
Wanneer u wilt dat de functie naar één document schrijft, kan de Cosmos DB-uitvoerbinding worden gekoppeld aan de volgende typen:
| Typologie | Beschrijving |
|---|---|
| JSON serialiseerbare typen | Een object dat de JSON-inhoud van een document vertegenwoordigt. Functions probeert een normaal oud CLR-objecttype (POCO) te serialiseren in JSON-gegevens. |
Wanneer u wilt dat de functie naar meerdere documenten schrijft, kan de Cosmos DB-uitvoerbinding worden gekoppeld aan de volgende typen:
| Typologie | Beschrijving |
|---|---|
T[] waar T is JSON serialiseerbare type |
Een matrix met meerdere documenten. Elke vermelding vertegenwoordigt één document. |
Voor andere uitvoerscenario's maakt en gebruikt u rechtstreeks een CosmosClient met andere typen van Microsoft.Azure.Cosmos . Zie Azure-clients registreren voor een voorbeeld van het gebruik van afhankelijkheidsinjectie om een clienttype te maken op basis van de Azure SDK.
SDK-bindingstypen
Ondersteuning voor SDK-typen voor Azure Cosmos is in preview. Volg de Python SDK-bindingen voor CosmosDB-voorbeeld om aan de slag te gaan met SDK-typen voor Cosmos in Python.
Belangrijk
Voor het gebruik van SDK-typebindingen is het Python v2-programmeermodel vereist.
| Verbindend | Parametertypen | Voorbeelden |
|---|---|---|
| CosmosDB-invoer |
ContainerProxy, CosmosClient, DatabaseProxy |
ContainerProxy,CosmosClient,DatabaseProxy |
Uitzonderingen en retourcodes
| Verbindend | Verwijzing |
|---|---|
| Azure Cosmos DB | HTTP-statuscodes voor Azure Cosmos DB |
host.json-instellingen
In deze sectie worden de configuratie-instellingen beschreven die beschikbaar zijn voor deze binding in versie 2.x en hoger. Instellingen in het bestand host.json zijn van toepassing op alle functies in een exemplaar van een functie-app. Zie host.json naslaginformatie voor Azure Functions voor meer informatie over configuratie-instellingen voor functie-apps.
{
"version": "2.0",
"extensions": {
"cosmosDB": {
"connectionMode": "Gateway",
"userAgentSuffix": "MyDesiredUserAgentStamp"
}
}
}
| Eigenschappen | Standaard | Beschrijving |
|---|---|---|
| connectionMode | Gateway |
De verbindingsmodus die door de functie wordt gebruikt bij het maken van verbinding met de Azure Cosmos DB-service. Opties: Direct maakt rechtstreeks verbinding met back-endreplica's via TCP en kan lagere latentie bieden en Gateway aanvragen routeren via een front-endgateway via HTTPS. Zie de verbindingsmodi van Azure Cosmos DB SDK voor meer informatie. |
| userAgentSuffix | n.v.t. | Hiermee voegt u de opgegeven tekenreekswaarde toe aan alle aanvragen die door de trigger of binding aan de service zijn gedaan. Hierdoor kunt u de activiteit in Azure Monitor gemakkelijker bijhouden op basis van een specifieke functie-app en filteren User Agentop. |