Visão geral do gatilho e associações do Azure Cosmos DB para o Azure Functions 2.x e superior
Este conjunto de artigos explica como trabalhar com associações do Azure Cosmos DB no Azure Functions 2.x e superior. O Azure Functions dá suporte a associações de gatilho, entrada e saída para o Azure Cosmos DB.
Ação | Type |
---|---|
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 |
Nota
Esta referência é para o Azure Functions versão 2.x e superior. Para obter informações sobre como usar essas associações no Functions 1.x, consulte Associações do Azure Cosmos DB para o Azure Functions 1.x.
Essa associação foi originalmente chamada de Banco de Dados de Documentos. No Azure Functions versão 2.x e superior, o gatilho, as associações e o pacote são todos denominados Azure Cosmos DB.
APIs suportadas
As associações do Azure Cosmos DB só têm suporte para uso com o Azure Cosmos DB para NoSQL. O suporte para o Azure Cosmos DB for Table é fornecido usando as associações de armazenamento de tabela, começando com a extensão 5.x. Para todas as outras APIs do Azure Cosmos DB, você deve acessar o banco de dados de sua função usando o cliente estático para sua API, incluindo o Azure Cosmos DB para MongoDB, Azure Cosmos DB para Cassandra e Azure Cosmos DB para Apache Gremlin.
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
A extensão de associações do Azure Cosmos DB faz parte de um pacote de extensão, que é especificado em seu arquivo de projeto host.json . Talvez seja necessário modificar esse pacote para alterar a versão da associação ou se os pacotes ainda não estiverem instalados. Para saber mais, consulte Pacote de extensão.
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.
Esta versão do pacote contém a versão 4.x da extensão de ligações do Azure Cosmos DB que 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.
Você pode adicionar esta versão da extensão do pacote de extensão de visualização v4 adicionando ou substituindo o seguinte código em seu host.json
arquivo:
{
"version": "2.0",
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Preview",
"version": "[4.0.0, 5.0.0)"
}
}
Para saber mais, consulte Atualizar suas extensões.
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 | Description |
---|---|
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 | Description |
---|---|
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 | Description |
---|---|
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 | Description |
---|---|
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 | Description |
---|---|
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 | Description |
---|---|
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 tipos do Microsoft.Azure.Cosmos diretamente.
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 nas versões 2.x e superiores. As configurações no arquivo host.json se aplicam a todas as funções em uma instância de aplicativo de função. O exemplo host.json arquivo abaixo contém apenas as configurações da versão 2.x+ para essa ligação. Para obter mais informações sobre definições de configuração de aplicativo de função nas versões 2.x e versões posteriores, consulte host.json referência para o Azure Functions.
{
"version": "2.0",
"extensions": {
"cosmosDB": {
"connectionMode": "Gateway",
"userAgentSuffix": "MyDesiredUserAgentStamp"
}
}
}
Property | Predefinição | Description |
---|---|---|
connectionMode | Gateway |
O modo de conexão usado pela função ao se conectar ao serviço Azure Cosmos DB. As opções são Direct e Gateway |
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 . |