Compartilhar via


Visão geral do gatilho e associações do Azure Cosmos DB para o Azure Functions

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 for criado ou modificado Gatilho
Leia um documento do Azure Cosmos DB Associação de entrada
Salvar alterações a um documento do Azure Cosmos DB Associação de saída

Importante

Esta versão da extensão de associação do Azure Cosmos DB dá suporte ao Azure Functions versão 4.x. Se o aplicativo ainda usar a versão 1.x do runtime do Functions, em vez disso, consulte as associações do Azure Cosmos DB para o Azure Functions 1.x. No runtime do Functions v1.x, essa associação foi originalmente nomeada DocumentDB.

APIs com suporte

Esta tabela indica como se conectar às várias APIs do Azure Cosmos DB do código de função:

API Recomendação
Azure Cosmos DB para NoSQL Usar a extensão de associação do Azure Cosmos DB
Azure Cosmos DB para MongoDB (vCore) Use a extensão de associação do Azure Cosmos DB para MongoDB, que está atualmente em versão prévia.
Azure Cosmos DB para Tabela Use a versão 5.x ou posterior da extensão de associação tabelas do Azure.
Azure Cosmos DB para Apache Cassandra Use um SDK de cliente nativo.
Azure Cosmos DB para Apache Gremlin (API do Graph) Usar um SDK de cliente nativo
Azure Cosmos DB para PostgreSQL Use um SDK de cliente nativo.

Instalar a extensão

O pacote NuGet da extensão instalado depende do modo C# usado no aplicativo de funções:

As funções são executadas em um processo de trabalho do C# isolado. Para saber mais, confira o Guia para executar C# do Azure Functions em um processo de trabalho isolado.

O processo para instalar a extensão varia de acordo com a versão da extensão:

Esta versão da extensão de associações do Azure Cosmos DB introduz a capacidade de conexão usando uma identidade em vez de um segredo. Para ver um tutorial sobre a configuração de aplicativos de funções com identidades gerenciadas, confira o tutorial sobre como criar um aplicativo de funções 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 representante que usa um parâmetro IFunctionsWorkerApplication. Em seguida, dentro do corpo desse representante, chame ConfigureCosmosDBExtension() no 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, verifique se o arquivo host.json na raiz do 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 instrui o host do [4.0.0, 5.0.0) Functions a usar uma versão de pacote pelo menos 4.0.0 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 do pacote de extensão mais recente e permitir que o runtime mantenha automaticamente a versão secundária mais recente. Você pode exibir o conteúdo do pacote mais recente na página de lançamento dos pacotes de extensão. Para obter mais informações, consulte os pacotes de extensão do Azure Functions.

Devido às alterações de esquema no SDK do Azure Cosmos DB, a versão 4.x da extensão do Azure Cosmos DB requer o azure-functions-java-library V3.0.0 para as funções Java.

Tipos de associação

Os tipos de associação com suporte para .NET dependem da versão da extensão e do modo de execução do C#, que pode ser um dos seguintes:

Uma função C# compilada da biblioteca de classes do processo de trabalho isolado é executada em um processo isolado do runtime.

Escolha uma versão para ver os detalhes do tipo de associação para o modo e a versão.

O processo de trabalho isolado dá suporte a tipos de parâmetro de acordo com a tabela abaixo. A compatibilidade com associações a tipo do Microsoft.Azure.Cosmos está em versão prévia.

Gatilho do Azure Cosmos DB

Quando você deseja que a função processe um único documento, o gatilho do Cosmos DB pode ser associado aos seguintes tipos:

Tipo Descrição
Tipos serializáveis JSON O Functions tenta desserializar os dados JSON do documento do feed de alterações do Cosmos DB em um tipo de objeto CLR (POCO) simples.

Quando você desejar que a função processe um lote de documentos, o gatilho do Cosmos DB pode ser associado aos seguintes tipos:

Tipo Descrição
IEnumerable<T> em T é um tipo serializável por JSON Uma enumeração de entidades incluídas no lote. Cada entrada representa um documento do feed de alterações do Cosmos DB.

Associação de entrada do Azure Cosmos DB

Quando você desejar que a função processe um único documento, a associação de entrada do Cosmos DB pode ser associada aos seguintes tipos:

Tipo Descrição
Tipos serializáveis JSON O Functions tenta desserializar os dados JSON do documento em um tipo de objeto CLR básico (POCO) simples.

Quando você desejar que a função processe vários documentos de uma consulta, a associação de entrada do Cosmos DB pode ser associada aos seguintes tipos:

Tipo Descrição
IEnumerable<T> em T é um tipo serializável por JSON Uma enumeração de entidades retornada pela consulta. Cada entrada representa um documento.
CosmosClient1 Um cliente conectado à conta do Cosmos DB.
Banco de dados1 Um cliente conectado ao banco de dados do Cosmos DB.
Contêiner1 Um cliente conectado ao contêiner do Cosmos DB.

1 Para usar esses tipos, você precisa referenciar Microsoft.Azure.Functions.Worker.Extensions.CosmosDB 4.4.0-preview1 ou posterior e as dependências comuns para associações de tipo SDK.

Associação de saída do Cosmos DB

Quando você desejar que a função seja gravada em um único documento, a associação de saída do Cosmos DB poderá ser associada aos seguintes tipos:

Tipo Descrição
Tipos serializáveis JSON Um objeto que representa o conteúdo JSON de um documento. O Functions tenta serializar um tipo de objeto CLR básico (POCO) em dados JSON.

Quando você desejar que a função seja gravada em vários documentos, a associação de saída do Cosmos DB poderá ser associada aos seguintes tipos:

Tipo Descrição
T[] em que T é um tipo serializável por JSON 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 com outros tipos diretamente de 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 do SDK do Azure.

Tipos de associação do SDK

O suporte ao Tipo de SDK para o Azure Cosmos está em versão prévia. Siga as Associações do SDK do Python para o Exemplo do CosmosDB para começar a usar os tipos de SDK para Cosmos no Python.

Importante

O uso de associações de tipo SDK requer o modelo de programação python v2.


Associação Tipos de parâmetro Exemplos
Entrada do CosmosDB ContainerProxy,
CosmosClient,
DatabaseProxy
ContainerProxy,
CosmosClient,
DatabaseProxy

Exceções e códigos de retorno

Associação Referência
Azure Cosmos DB Códigos de status HTTP para Azure Cosmos DB

configurações de host.json

Esta seção descreve as configurações 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 do aplicativo de funções. Para obter mais informações sobre as configurações de aplicativo de funções, consulte host.json referência para o Azure Functions.

{
    "version": "2.0",
    "extensions": {
        "cosmosDB": {
            "connectionMode": "Gateway",
            "userAgentSuffix": "MyDesiredUserAgentStamp"
        }
    }
}
Propriedade Padrão Descrição
connectionMode Gateway O modo de conexão usado pela função ao se conectar ao serviço do Azure Cosmos DB. Opções: Direct conecta-se diretamente a réplicas de back-end via TCP e pode fornecer menor latência e Gateway roteia solicitações por meio de um gateway de front-end via HTTPS. Para obter mais informações, consulte os modos de conexão do SDK do Azure Cosmos DB.
userAgentSuffix n/d Adiciona o valor da cadeia de caracteres especificada a todas as solicitações feitas pelo gatilho ou pela associação ao serviço. Isso facilita o acompanhamento da atividade no Azure Monitor, com base em um aplicativo de funções específico e com o filtro por User Agent.

Próximas etapas