Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este conjunto de artigos explica como trabalhar com associações do Azure Cosmos DB no Azure Functions. O Azure Functions dá suporte a associações de gatilho, entrada e saída para o Azure Cosmos DB.
| Ação | Tipo |
|---|---|
| Executar uma função quando um documento do Azure Cosmos DB é criado ou modificado | Acionador |
| Ler um documento do Azure Cosmos DB | Vinculação de entrada |
| Salvar alterações em um documento do Azure Cosmos DB | Vinculação de saída |
Importante
Esta versão da extensão de vinculação do Azure Cosmos DB dá suporte ao Azure Functions versão 4.x. Se seu aplicativo ainda usa a versão 1.x do tempo de execução do Functions, consulte Associações do Azure Cosmos DB para o Azure Functions 1.x.
No tempo de execução do Functions v1.x, essa associação foi originalmente nomeada DocumentDB.
APIs suportadas
Esta tabela indica como se conectar às várias APIs do Azure Cosmos DB a partir do seu código de função:
Instalar a extensão
O pacote de extensão NuGet que você instala depende do modo C# que você está usando em seu aplicativo de função:
As funções são executadas em um processo de trabalho C# isolado. Para saber mais, consulte Guia para executar o C# Azure Functions em um processo de trabalho isolado.
O processo de instalação da extensão varia dependendo da versão da extensão:
Esta versão da extensão de ligações do Azure Cosmos DB introduz a capacidade de se conectar usando uma identidade em vez de um segredo. Para obter um tutorial sobre como configurar seus aplicativos de função com identidades gerenciadas, consulte o tutorial de criação de um aplicativo de função com conexões baseadas em identidade.
Adicione a extensão ao seu projeto instalando o pacote NuGet, versão 4.x.
Se você estiver escrevendo seu aplicativo usando F#, também deverá configurar essa extensão como parte da configuração de inicialização do aplicativo. Na chamada para ConfigureFunctionsWorkerDefaults() ou ConfigureFunctionsWebApplication(), adicione um delegado que usa um IFunctionsWorkerApplication parâmetro. Em seguida, dentro do corpo desse delegado, chame ConfigureCosmosDBExtension() o objeto:
let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
appBuilder.ConfigureCosmosDBExtension() |> ignore
) |> ignore
Instalar pacote
Para poder usar essa extensão de associação em seu aplicativo, certifique-se de que o arquivo dehost.json na raiz do seu projeto contém esta extensionBundle referência:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle",
"version": "[4.0.0, 5.0.0)"
}
}
Neste exemplo, o version valor de instrui o host Functions a usar uma versão de [4.0.0, 5.0.0) pacote que seja pelo menos 4.0.0 , mas menor que 5.0.0, que inclui todas as versões potenciais do 4.x. Essa notação mantém efetivamente seu aplicativo na versão secundária mais recente disponível do pacote de extensão v4.x.
Quando possível, você deve usar a versão principal mais recente do pacote de extensão e permitir que o tempo de execução mantenha automaticamente a versão secundária mais recente. Você pode visualizar o conteúdo do pacote mais recente na página de lançamento dos pacotes de extensão. Para obter mais informações, consulte Pacotes de extensão do Azure Functions.
Devido a alterações de esquema no SDK do Azure Cosmos DB, a versão 4.x da extensão do Azure Cosmos DB requer azure-functions-java-library V3.0.0 para funções Java.
Tipos de vinculação
Os tipos de associação suportados para .NET dependem da versão da extensão e do modo de execução C#, que pode ser um dos seguintes:
Uma biblioteca de classes de processo de trabalho isolada compilada função C# é executada em um processo isolado do tempo de execução.
Escolha uma versão para ver os detalhes do tipo de vinculação para o modo e a versão.
O processo de trabalho isolado suporta tipos de parâmetros de acordo com as tabelas abaixo. O suporte para associação a tipos de Microsoft.Azure.Cosmosestá em visualização.
Gatilho do Cosmos DB
Quando você deseja que a função processe um único documento, o gatilho do Cosmos DB pode se vincular aos seguintes tipos:
| Tipo | Descrição |
|---|---|
| Tipos serializáveis JSON | As funções tentam desserializar os dados JSON do documento do feed de alteração do Cosmos DB para um tipo de objeto CLR (POCO) simples. |
Quando você deseja que a função processe um lote de documentos, o gatilho do Cosmos DB pode se vincular aos seguintes tipos:
| Tipo | Descrição |
|---|---|
IEnumerable<T>onde T é um tipo serializável JSON |
Uma enumeração de entidades incluídas no lote. Cada entrada representa um documento do feed de alterações do Cosmos DB. |
Vinculação de entrada do Cosmos DB
Quando você deseja que a função processe um único documento, a associação de entrada do Cosmos DB pode se vincular aos seguintes tipos:
| Tipo | Descrição |
|---|---|
| Tipos serializáveis JSON | As funções tentam desserializar os dados JSON do documento em um tipo de objeto CLR antigo (POCO). |
Quando você deseja que a função processe vários documentos de uma consulta, a associação de entrada do Cosmos DB pode se vincular aos seguintes tipos:
| Tipo | Descrição |
|---|---|
IEnumerable<T>onde T é um tipo serializável JSON |
Uma enumeração de entidades retornadas pela consulta. Cada entrada representa um documento. |
| CosmosClient1 | Um cliente conectado à conta do Cosmos DB. |
| Base de dados1 | Um cliente conectado ao banco de dados do Cosmos DB. |
| Contentor1 | Um cliente conectado ao contêiner do Cosmos DB. |
1 Para usar esses tipos, você precisa fazer referência a Microsoft.Azure.Functions.Worker.Extensions.CosmosDB 4.4.0 ou posterior e às dependências comuns para associações de tipo SDK.
Ligação de saída do Cosmos DB
Quando você deseja que a função grave em um único documento, a associação de saída do Cosmos DB pode se vincular aos seguintes tipos:
| Tipo | Descrição |
|---|---|
| Tipos serializáveis JSON | Um objeto que representa o conteúdo JSON de um documento. As funções tentam serializar um tipo de objeto CLR (POCO) antigo em dados JSON. |
Quando você deseja que a função grave em vários documentos, a associação de saída do Cosmos DB pode se vincular aos seguintes tipos:
| Tipo | Descrição |
|---|---|
T[] onde T é JSON tipo serializável |
Uma matriz que contém vários documentos. Cada entrada representa um documento. |
Para outros cenários de saída, crie e use um CosmosClient diretamente com outros tipos do Microsoft.Azure.Cosmos . Consulte Registrar clientes do Azure para obter um exemplo de como usar a injeção de dependência para criar um tipo de cliente a partir do SDK do Azure.
Tipos de vinculação SDK
O suporte de Tipo de SDK para o Azure Cosmos está em Pré-visualização. Siga o exemplo Python SDK Bindings for CosmosDB para começar a usar os tipos de SDK para Cosmos em Python.
Importante
Usar associações de tipo SDK requer o modelo de programação Python v2.
| Enlace | Tipos de parâmetros | Exemplos |
|---|---|---|
| Entrada do CosmosDB |
ContainerProxy, CosmosClient, DatabaseProxy |
ContainerProxy,CosmosClient,DatabaseProxy |
Exceções e códigos de devolução
| Enlace | Referência |
|---|---|
| Azure Cosmos DB | Códigos de estado HTTP do Azure Cosmos DB |
host.json configurações
Esta seção descreve as definições de configuração disponíveis para essa associação na versão 2.x e posterior. As configurações no arquivo host.json se aplicam a todas as funções em uma instância de aplicativo de função. Para obter mais informações sobre definições de configuração de aplicativo de função, consulte host.json referência para o Azure Functions.
{
"version": "2.0",
"extensions": {
"cosmosDB": {
"connectionMode": "Gateway",
"userAgentSuffix": "MyDesiredUserAgentStamp"
}
}
}
| Propriedade | Predefinição | Descrição |
|---|---|---|
| connectionMode | Gateway |
O modo de conexão usado pela função ao se conectar ao serviço Azure Cosmos DB. Opções: Direct conecta-se diretamente a réplicas de back-end por TCP e pode fornecer latência mais baixa e Gateway roteia solicitações por meio de um gateway front-end por HTTPS. Para obter mais informações, consulte Modos de conexão do SDK do Azure Cosmos DB. |
| userAgentSuffix | n/d | Adiciona o valor de cadeia de caracteres especificado a todas as solicitações feitas pelo gatilho ou associação ao serviço. Isso facilita o acompanhamento da atividade no Azure Monitor, com base em um aplicativo de função específica e na filtragem por User Agent. |