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.
O Azure Cosmos DB Trigger usa o feed de mudança Azure Cosmos DB para ouvir inserções e atualizações entre partições. O feed de alterações publica itens novos e atualizados, não incluindo atualizações de exclusões. Para um cenário de ponta a ponta que utilize o gatilho Azure Cosmos DB, veja Quickstart: Responder a alterações na base de dados em Azure Cosmos DB usando Funções do Azure.
Para obter informações sobre detalhes de instalação e configuração, consulte a visão geral.
As decisões de dimensionamento do Cosmos DB para os planos Consumo e Premium são feitas por meio do dimensionamento baseado em metas. Para obter mais informações, consulte Dimensionamento baseado em destino.
Importante
Este artigo usa guias para oferecer suporte a várias versões do modelo de programação Node.js. O modelo v4 está geralmente disponível e foi projetado para ter uma experiência mais flexível e intuitiva para desenvolvedores JavaScript e TypeScript. Para mais detalhes sobre como funciona o modelo v4, consulte o guia para desenvolvedores Funções do Azure Node.js. Para saber mais sobre as diferenças entre v3 e v4, consulte o guia de migração.
O Funções do Azure suporta dois modelos de programação para Python. A maneira como você define suas ligações depende do modelo de programação escolhido.
O modelo de programação Python v2 permite-te definir bindings usando decoradores diretamente no teu código de função Python. Para mais informações, consulte o guia para desenvolvedores Python.
Este artigo suporta ambos os modelos de programação.
Para um exemplo completo de utilização do gatilho Azure Cosmos DB, veja Responder às alterações da base de dados em Azure Cosmos DB usando Funções do Azure.
Exemplo
O uso do gatilho depende da versão do pacote de extensão e da modalidade C# usada em seu aplicativo de função, que pode ser uma das seguintes:
Uma biblioteca de classes de processo de trabalho isolada compilada função C# é executada em um processo isolado do tempo de execução.
Os exemplos a seguir dependem da versão de extensão para o modo C# fornecido.
Este exemplo utiliza referências nas definições da aplicação e inclui o tratamento de erros. Primeiro, defina o seu tipo de modelo:
public class ToDoItem
{
public string? Id { get; set; }
public string? Description { get; set; }
}
A seguinte função executa-se quando ocorrem inserções ou atualizações na base de dados e contentor especificados:
[Function("CosmosTrigger")]
public void Run([CosmosDBTrigger(
databaseName: "%COSMOS_DATABASE_NAME%",
containerName: "%COSMOS_CONTAINER_NAME%",
Connection = "COSMOS_CONNECTION",
LeaseContainerName = "leases",
CreateLeaseContainerIfNotExists = true)] IReadOnlyList<ToDoItem> documents,
FunctionContext context)
{
if (documents is not null && documents.Any())
{
_logger.LogInformation("Documents modified: {count}", documents.Count);
foreach (var doc in documents)
{
try
{
_logger.LogInformation("Processing document Id: {id}", doc.Id);
// Add your business logic here
}
catch (Exception ex)
{
_logger.LogError(ex, "Error processing document {id}", doc.Id);
// Continue processing remaining documents
}
}
}
}
[Function("health")]
public IActionResult HealthCheck([HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = "health")] HttpRequest req)
{
return new OkResult();
}
O exemplo anterior usa referências de definições da aplicação (%VAR_NAME%) em vez de valores codificados fixamente. Para detalhes de configuração, consulte as definições da aplicação e orientações de desenvolvimento local no separador em processo.
Essa função é invocada quando há inserções ou atualizações no banco de dados e no contêiner especificados.
Devido a alterações de esquema no SDK Azure Cosmos DB, a versão 4.x da extensão Azure Cosmos DB requer azure-functions-java-library V3.0.0 para Java funções.
@FunctionName("CosmosDBTriggerFunction")
public void run(
@CosmosDBTrigger(
name = "items",
databaseName = "ToDoList",
containerName = "Items",
leaseContainerName="leases",
connection = "AzureCosmosDBConnection",
createLeaseContainerIfNotExists = true
)
Object inputItem,
final ExecutionContext context
) {
context.getLogger().info("Items modified: " + inputItems.size());
}
Na biblioteca de runtime de funções Java, use a anotação @CosmosDBTrigger em parâmetros cujo valor provém de Azure Cosmos DB. Use esta anotação com tipos nativos de Java, objetos Java simples (POJOs) ou valores anuláveis usando Optional<T>.
O exemplo seguinte mostra um trigger Azure Cosmos DB
import { app, InvocationContext } from '@azure/functions';
export async function cosmosDBTrigger1(documents: unknown[], context: InvocationContext): Promise<void> {
context.log(`Cosmos DB function processed ${documents.length} documents`);
}
app.cosmosDB('cosmosDBTrigger1', {
connection: '<connection-app-setting>',
databaseName: 'Tasks',
containerName: 'Items',
createLeaseContainerIfNotExists: true,
handler: cosmosDBTrigger1,
});
O exemplo seguinte mostra um gatilho Azure Cosmos DB
const { app } = require('@azure/functions');
app.cosmosDB('cosmosDBTrigger1', {
connection: '<connection-app-setting>',
databaseName: 'Tasks',
containerName: 'Items',
createLeaseContainerIfNotExists: true,
handler: (documents, context) => {
context.log(`Cosmos DB function processed ${documents.length} documents`);
},
});
O exemplo seguinte mostra como executar uma função à medida que os dados mudam no Azure Cosmos DB.
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "<connection-app-setting>",
"databaseName": "Tasks",
"collectionName": "Items",
"createLeaseCollectionIfNotExists": true
}
Note que alguns dos nomes dos atributos de ligação mudaram na versão 4.x da extensão Azure Cosmos DB.
No arquivo run.ps1, você tem acesso ao documento que aciona a função por meio do $Documents parâmetro.
param($Documents, $TriggerMetadata)
Write-Host "First document Id modified : $($Documents[0].id)"
O exemplo seguinte mostra uma ligação de trigger do Azure Cosmos DB. O exemplo depende se usas o modelo de programação Python v1 ou v2.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="CosmosDBTrigger")
@app.cosmos_db_trigger(arg_name="documents",
database_name="%COSMOS_DATABASE_NAME%",
container_name="%COSMOS_CONTAINER_NAME%",
connection="COSMOS_CONNECTION",
lease_container_name="leases",
create_lease_container_if_not_exists="true")
def cosmos_trigger(documents: func.DocumentList) -> str:
if documents:
for doc in documents:
try:
logging.info('Processing document id: %s', doc['id'])
# Add your business logic here
except Exception as e:
logging.error('Error processing document %s: %s', doc.get('id', 'unknown'), str(e))
# Continue processing remaining documents
@app.function_name(name="health")
@app.route(route="health", methods=["GET"])
def health_check(req: func.HttpRequest) -> func.HttpResponse:
"""Health check endpoint for monitoring."""
return func.HttpResponse("OK", status_code=200)
O exemplo anterior usa referências de definições da aplicação (%VAR_NAME%) em vez de valores codificados fixamente.
Definições da aplicação
Configure estas definições de aplicação para ligações baseadas em identidade:
| Configuração | Description | Exemplo |
|---|---|---|
COSMOS_DATABASE_NAME |
Nome da base de dados Azure Cosmos DB | my-database |
COSMOS_CONTAINER_NAME |
Nome do contentor a monitorizar | my-container |
COSMOS_CONNECTION__accountEndpoint |
Azure Cosmos DB account endpoint | https://mycosmosdb.documents.azure.com:443/ |
COSMOS_CONNECTION__credential |
Definido para managedidentity UAMI |
managedidentity |
COSMOS_CONNECTION__clientId |
ID de cliente da identidade gerida atribuída ao utilizador | 00000000-0000-0000-0000-000000000000 |
Desenvolvimento local
Para desenvolvimento local, crie um local.settings.json ficheiro:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "python",
"COSMOS_DATABASE_NAME": "my-database",
"COSMOS_CONTAINER_NAME": "my-container",
"COSMOS_CONNECTION__accountEndpoint": "https://mycosmosdb.documents.azure.com:443/"
}
}
Sugestão
Para o desenvolvimento local, omitir COSMOS_CONNECTION__credential e COSMOS_CONNECTION__clientId. O DefaultAzureCredential tenta várias credenciais por ordem, incluindo as suas credenciais de CLI do Azure de login.
Pré-requisitos para o desenvolvimento local:
-
CLI do Azure com
az loginconcluído -
Emulador de armazenamento Azurite a correr (
azurite --silent)
O exemplo seguinte mostra uma função de disparo do Azure Cosmos DB que regista cada documento alterado:
package main
import (
"context"
"log"
"github.com/azure/azure-functions-golang-worker/sdk"
"github.com/azure/azure-functions-golang-worker/sdk/bindings"
"github.com/azure/azure-functions-golang-worker/worker"
)
func main() {
app := sdk.FunctionApp()
app.CosmosDB("cosmosDBTrigger", processChanges,
sdk.WithDatabase("mydb"),
sdk.WithContainer("mycontainer"),
sdk.WithConnection("CosmosDBConnection"),
)
worker.Start(app)
}
func processChanges(ctx context.Context, docs []bindings.CosmosDocument) error {
for _, doc := range docs {
log.Printf("Document modified: %s", doc.ID)
}
return nil
}
Atributos
Tanto as bibliotecas C# em processo como as isoladas são usadas CosmosDBTriggerAttribute para definir a função. Em vez disso, o script C# usa um arquivo de configuração function.json, conforme descrito no guia de script C#.
As propriedades específicas dependem tanto do modelo de processo como da versão de extensão:
Bibliotecas de processos trabalhadores isolados usam CosmosDBTriggerAttribute do espaço de nomes Microsoft.Azure.Functions.Worker, que define estas propriedades:
| Propriedade Attribute | Description |
|---|---|
| Ligação | O nome de uma configuração de aplicação ou coleção de definições que especifica como se ligar à conta do Azure Cosmos DB que está a ser monitorizada. Para obter mais informações, consulte Conexões. |
| Nome do Banco de Dados | O nome da base de dados Azure Cosmos DB com o contentor a ser monitorizado. |
| Nome do contêiner | O nome do contêiner que está sendo monitorado. |
| LeaseConnection | (Opcional) O nome de uma configuração de aplicação ou coleção de definições que especifica como se ligar à conta do Azure Cosmos DB que contém o contentor do arrendamento. Quando não definido, o Connection valor é usado. Este parâmetro é definido automaticamente quando a ligação é criada no portal. A cadeia de ligação para o contentor do arrendamento deve ter permissões de escrita. |
| LeaseDatabaseName | (Opcional) O nome do banco de dados que contém o contêiner usado para armazenar concessões . Quando não está definido, o databaseName valor da configuração é usado. |
| LeaseContainerName | (Opcional) O nome do contêiner usado para armazenar locações. Quando não definido, o valor leases é usado. |
| CreateLeaseContainerIfNotExists | (Opcional) Quando definido como true, o contêiner de concessões é criado automaticamente quando ainda não existe. O valor predefinido é false. Ao usar Microsoft Entra identidades, se definir o valor para true, criar contentores não é uma operação permitida e a sua Função não poderá arrancar. |
| LeasesContainerThroughput | (Opcional) Define o número de Unidades de Solicitação a serem atribuídas quando o contêiner de concessões é criado. Essa configuração só é usada quando CreateLeaseContainerIfNotExists está definida como true. Este parâmetro é definido automaticamente quando a associação é criada usando o portal. |
| LeaseContainerPrefix | (Opcional) Quando definido, o valor é adicionado como um prefixo às concessões criadas no contêiner Lease para essa função. A utilização de um prefixo permite que duas Funções do Azure separadas partilhem o mesmo contentor de arrendamento usando prefixos diferentes. |
| FeedPollDelay | (Opcional) O tempo (em milissegundos) para o atraso entre a sondagem de uma partição para novas alterações no feed, depois que todas as alterações atuais são drenadas. O padrão é 5.000 milissegundos ou 5 segundos. |
| LeaseAcquireInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo para iniciar uma tarefa para calcular se as partições são distribuídas uniformemente entre instâncias de host conhecidas. O padrão é 13000 (13 segundos). |
| LeaseExpirationInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo para o qual a concessão é tomada em uma concessão que representa uma partição. Se a concessão não for renovada dentro desse intervalo, ela expirará e a propriedade da partição será movida para outra instância. O padrão é 60000 (60 segundos). |
| LeaseRenewInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo de renovação para todas as concessões de partições atualmente mantidas por uma instância. O padrão é 17000 (17 segundos). |
| MaxItemsPerInvocation | (Opcional) Quando definida, essa propriedade define o número máximo de itens recebidos por chamada de função. Se as operações no contêiner monitorado forem executadas por meio de procedimentos armazenados, o escopo da transação será preservado ao ler itens do feed de alterações. Como resultado, o número de itens recebidos pode ser maior do que o valor especificado para que os itens alterados pela mesma transação sejam retornados como parte de um lote atômico. |
| StartFromBeginning | (Opcional) Essa opção informa ao Gatilho para ler as alterações desde o início do histórico de alterações do contêiner em vez de começar no momento atual. A leitura desde o início só funciona na primeira vez que o gatilho é iniciado, pois nas execuções subsequentes, os pontos de verificação já estão armazenados. Definir essa opção para true quando houver concessões já criadas não terá efeito. |
| StartFromTime | (Opcional) Obtém ou define a data e a hora a partir das quais inicializar a operação de leitura do feed de alterações. O formato recomendado é ISO 8601 com o designador UTC, como 2021-02-16T14:19:29Z. Isso é usado apenas para definir o estado inicial do gatilho. Depois que o gatilho tiver um estado de concessão, alterar esse valor não terá efeito. |
| Locais preferidos | (Opcional) Define localizações preferenciais (regiões) para contas de base de dados geo-replicadas no serviço Azure Cosmos DB. Os valores devem ser separados por vírgula. Por exemplo, "Leste dos EUA, Centro-Sul dos EUA, Norte da Europa". |
Decoradores
Aplica-se apenas ao modelo de programação Python v2.
Para Python funções v2 definidas pelo uso de um decorador, o cosmos_db_trigger (Extensão 4.x) suporta as seguintes propriedades:
| Property | Description |
|---|---|
arg_name |
O nome da variável usada no código da função que representa a lista de documentos com alterações. |
database_name |
O nome da base de dados Azure Cosmos DB. Suporta %VAR_NAME% sintaxe para referenciar as definições da aplicação. |
container_name |
O nome do contentor Azure Cosmos DB a ser monitorizado. Suporta %VAR_NAME% sintaxe. |
connection |
O nome de uma configuração ou prefixo de uma aplicação para ligações baseadas em identidade (por exemplo, COSMOS_CONNECTION resolve para COSMOS_CONNECTION__accountEndpoint, e assim sucessivamente). |
lease_container_name |
O nome do contentor usado para armazenar contratos de arrendamento. |
create_lease_container_if_not_exists |
Quando true, cria automaticamente o contentor de arrendamento se este não existir. |
Para Python funções definidas usando function.json, veja a secção Configuration.
Anotações
Devido a alterações de esquema no SDK Azure Cosmos DB, a versão 4.x da extensão Azure Cosmos DB requer azure-functions-java-library V3.0.0 para Java funções.
Use a anotação @CosmosDBTrigger em parâmetros que leem dados de Azure Cosmos DB. A anotação suporta as seguintes propriedades:
| Propriedade Attribute | Description |
|---|---|
| conexão | O nome de uma configuração de aplicação ou coleção de definições que especifica como se ligar à conta do Azure Cosmos DB que está a ser monitorizada. Para obter mais informações, consulte Conexões. |
| Designação | O nome da função. |
| Nome do banco de dados | O nome da base de dados Azure Cosmos DB com o contentor a ser monitorizado. |
| containerName | O nome do contêiner que está sendo monitorado. |
| leaseConnectionStringSetting | (Opcional) O nome de uma configuração de aplicação ou coleção de definições que especifica como se ligar à conta do Azure Cosmos DB que contém o contentor do arrendamento. Quando não definido, o connection valor é usado. Este parâmetro é definido automaticamente quando a ligação é criada no portal. A cadeia de ligação para o contentor do arrendamento deve ter permissões de escrita. |
| leaseDatabaseName | (Opcional) O nome do banco de dados que contém o contêiner usado para armazenar concessões . Quando não está definido, o databaseName valor da configuração é usado. |
| leaseContainerName | (Opcional) O nome do contêiner usado para armazenar locações. Quando não definido, o valor leases é usado. |
| createLeaseContainerIfNotExists | (Opcional) Quando definido como true, o contêiner de concessões é criado automaticamente quando ainda não existe. O valor predefinido é false. Ao usar Microsoft Entra identidades, se definir o valor para true, criar contentores não é uma operação permitida e a sua aplicação de funções não pode iniciar. |
| leasesContainerThroughput | (Opcional) Define o número de Unidades de Solicitação a serem atribuídas quando o contêiner de concessões é criado. Essa configuração só é usada quando CreateLeaseContainerIfNotExists está definida como true. Este parâmetro é definido automaticamente quando a associação é criada usando o portal. |
| leaseContainerPrefix | (Opcional) Quando definido, o valor é adicionado como um prefixo às concessões criadas no contêiner Lease para essa função. A utilização de um prefixo permite que duas Funções do Azure separadas partilhem o mesmo contentor de arrendamento usando prefixos diferentes. |
| feedPollDelay | (Opcional) O tempo (em milissegundos) para o atraso entre a sondagem de uma partição para novas alterações no feed, depois que todas as alterações atuais são drenadas. O padrão é 5.000 milissegundos ou 5 segundos. |
| leaseAcquireInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo para iniciar uma tarefa para calcular se as partições são distribuídas uniformemente entre instâncias de host conhecidas. O padrão é 13000 (13 segundos). |
| leaseExpirationInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo para o qual a concessão é tomada em uma concessão que representa uma partição. Se a concessão não for renovada dentro desse intervalo, ela expirará e a propriedade da partição será movida para outra instância. O padrão é 60000 (60 segundos). |
| leaseRenewInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo de renovação para todas as concessões para partições atualmente mantidas por uma instância. O padrão é 17000 (17 segundos). |
| maxItemsPerInvocation | (Opcional) Quando definida, essa propriedade define o número máximo de itens recebidos por chamada de função. Se as operações no contêiner monitorado forem executadas por meio de procedimentos armazenados, o escopo da transação será preservado ao ler itens do feed de alterações. Como resultado, o número de itens recebidos pode ser maior do que o valor especificado para que os itens alterados pela mesma transação sejam retornados como parte de um lote atômico. |
| startFromBeginning | (Opcional) Essa opção informa ao Gatilho para ler as alterações desde o início do histórico de alterações do contêiner em vez de começar no momento atual. A leitura desde o início só funciona na primeira vez que o gatilho é iniciado, pois nas execuções subsequentes, os pontos de verificação já estão armazenados. Definir essa opção para true quando houver concessões já criadas não terá efeito. |
| preferredLocations | (Opcional) Define localizações preferenciais (regiões) para contas de base de dados geo-replicadas no serviço Azure Cosmos DB. Os valores devem ser separados por vírgula. Por exemplo, East US,South Central US,North Europe. |
Configuração
Aplica-se apenas ao modelo de programação Python v1.
A tabela a seguir explica as propriedades de configuração de associação definidas no arquivo function.json, onde as propriedades diferem de acordo com a versão da extensão:
| function.json propriedade | Description |
|---|---|
| type | Deve ser definido como cosmosDBTrigger. |
| direção | Deve ser definido como in. Este parâmetro é definido automaticamente quando cria o gatilho no portal Azure. |
| Designação | O nome da variável usada no código da função que representa a lista de documentos com alterações. |
| conexão | O nome de uma configuração de aplicação ou coleção de definições que especifica como se ligar à conta do Azure Cosmos DB que está a ser monitorizada. Para obter mais informações, consulte Conexões. |
| Nome do banco de dados | O nome da base de dados Azure Cosmos DB com o contentor a ser monitorizado. |
| containerName | O nome do contêiner que está sendo monitorado. |
| arrendarConexão | (Opcional) O nome de uma configuração de aplicação ou contentor de definição que especifica como se ligar à conta do Azure Cosmos DB que contém o contentor do arrendamento. Quando não definido, o connection valor é usado. Este parâmetro é definido automaticamente quando a ligação é criada no portal. A cadeia de ligação para o contentor do arrendamento deve ter permissões de escrita. |
| leaseDatabaseName | (Opcional) O nome do banco de dados que contém o contêiner usado para armazenar concessões . Quando não está definido, o databaseName valor da configuração é usado. |
| leaseContainerName | (Opcional) O nome do contêiner usado para armazenar locações. Quando não definido, o valor leases é usado. |
| createLeaseContainerIfNotExists | (Opcional) Quando definido como true, o contêiner de concessões é criado automaticamente quando ainda não existe. O valor predefinido é false. Ao usar Microsoft Entra identidades, se definir o valor para true, criar contentores não é uma operação permitida e a sua Função não poderá arrancar. |
| leasesContainerThroughput | (Opcional) Define o número de Unidades de Solicitação a serem atribuídas quando o contêiner de concessões é criado. Essa configuração só é usada quando createLeaseContainerIfNotExists está definida como true. Este parâmetro é definido automaticamente quando a associação é criada usando o portal. |
| leaseContainerPrefix | (Opcional) Quando definido, o valor é adicionado como um prefixo às concessões criadas no contêiner Lease para essa função. A utilização de um prefixo permite que duas Funções do Azure separadas partilhem o mesmo contentor de arrendamento usando prefixos diferentes. |
| feedPollDelay | (Opcional) O tempo (em milissegundos) para o atraso entre a sondagem de uma partição para novas alterações no feed, depois que todas as alterações atuais são drenadas. O padrão é 5.000 milissegundos ou 5 segundos. |
| leaseAcquireInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo para iniciar uma tarefa para calcular se as partições são distribuídas uniformemente entre instâncias de host conhecidas. O padrão é 13000 (13 segundos). |
| leaseExpirationInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo para o qual a concessão é tomada em uma concessão que representa uma partição. Se a concessão não for renovada dentro desse intervalo, ela expirará e a propriedade da partição será movida para outra instância. O padrão é 60000 (60 segundos). |
| leaseRenewInterval | (Opcional) Quando definido, ele define, em milissegundos, o intervalo de renovação para todas as concessões de partições atualmente mantidas por uma instância. O padrão é 17000 (17 segundos). |
| maxItemsPerInvocation | (Opcional) Quando definida, essa propriedade define o número máximo de itens recebidos por chamada de função. Se as operações no contêiner monitorado forem executadas por meio de procedimentos armazenados, o escopo da transação será preservado ao ler itens do feed de alterações. Como resultado, o número de itens recebidos pode ser maior do que o valor especificado para que os itens alterados pela mesma transação sejam retornados como parte de um lote atômico. |
| startFromBeginning | (Opcional) Essa opção informa ao Gatilho para ler as alterações desde o início do histórico de alterações do contêiner em vez de começar no momento atual. A leitura desde o início só funciona na primeira vez que o gatilho é iniciado, pois nas execuções subsequentes, os pontos de verificação já estão armazenados. Definir essa opção para true quando houver concessões já criadas não terá efeito. |
| startFromTime | (Opcional) Obtém ou define a data e a hora a partir das quais inicializar a operação de leitura do feed de alterações. O formato recomendado é ISO 8601 com o designador UTC, como 2021-02-16T14:19:29Z. Isso é usado apenas para definir o estado inicial do gatilho. Depois que o gatilho tiver um estado de concessão, alterar esse valor não terá efeito. |
| preferredLocations | (Opcional) Define localizações preferenciais (regiões) para contas de base de dados geo-replicadas no serviço Azure Cosmos DB. Os valores devem ser separados por vírgula. Por exemplo, "Leste dos EUA, Centro-Sul dos EUA, Norte da Europa". |
Para exemplos completos, veja a secção de Exemplos.
Utilização
O gatilho requer uma segunda coleção que ele usa para armazenar concessões sobre as partições. O gatilho só funciona se tanto a cobrança que está a monitorizar como a coleção que contém os contratos de arrendamento estiverem disponíveis.
Importante
Se configurar várias funções para usarem um gatilho Azure Cosmos DB para a mesma coleção, cada função deve usar uma coleção dedicada de arrendamento ou especificar um LeaseCollectionPrefix diferente para cada função. Caso contrário, apenas uma das funções é acionada. Para obter informações sobre o prefixo, consulte a seção Atributos.
Importante
Se configurar várias funções para usarem um gatilho Azure Cosmos DB para a mesma coleção, cada função deve usar uma coleção dedicada de arrendamento ou especificar um leaseCollectionPrefix diferente para cada função. Caso contrário, apenas uma das funções é acionada. Para obter informações sobre o prefixo, consulte a seção Anotações.
Importante
Se configurar várias funções para usarem um gatilho Azure Cosmos DB para a mesma coleção, cada função deve usar uma coleção dedicada de arrendamento ou especificar um leaseCollectionPrefix diferente para cada função. Caso contrário, apenas uma das funções é acionada. Para obter informações sobre o prefixo, consulte a seção Configuração.
O gatilho não indica se um documento foi atualizado ou inserido. Apenas fornece o próprio documento. Se precisares de gerir atualizações e inserções de forma diferente, implementa campos de carimbo temporal para inserção ou atualização.
O tipo de parâmetro suportado pelo gatilho do Azure Cosmos DB depende da versão de runtime das Funções, da versão do pacote de extensão e da modalidade C# utilizada.
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. |
Ligações
As connection propriedades e leaseConnection são definidas como chaves nas definições da aplicação que retornam valores usados pelo runtime das Funções para se ligar aos endpoints da conta do Azure Cosmos DB usados pela extensão. O valor destas definições de propriedades depende do tipo de ligação:
-
Ligação de identidade gerida: A
connectionpropriedade é<CONNECTION_NAME_PREFIX>partilhada por um grupo de definições que, em conjunto, definem uma ligação baseada na identidade à conta. Para mais informações, consulte Definir ligações de identidade. -
Referência Key Vault: A
connectiondefinição de propriedade devolve uma referência Azure Key Vault ao local onde a cadeia de ligação é mantida centralmente. Para mais informações, consulte Definir ligações ao Key Vault. -
Referência de App Configuration: A
connectiondefinição de propriedade devolve uma referência Azure App Configuration que devolve uma cadeia de ligação ou uma referência ao Key Vault. Para mais informações, consulte Azure App Configuration no artigo de ligações. -
Connection string: A
connectiondefinição de propriedade devolve a cadeia de ligação da conta real. Como a cadeia de ligação contém chaves secretas partilhadas, deve considerar usar uma ligação de identidade gerida, sempre que possível. Para mais informações, veja Definir ligações.
Para saber mais sobre ligações de ligações, consulte Gerir ligação no Funções do Azure. Para obter uma cadeia de ligação, navegue até à sua conta Azure Cosmos DB, selecione Keys e depois copie os valores PRIMARY CONNECTION STRING ou SECONDARY CONNECTION STRING. Estas cadeias de ligação contêm chaves secretas partilhadas e devem ser mantidas seguras.
Em versões anteriores da extensão, as propriedades de ligação eram nomeadas connectionStringSetting e leaseConnectionStringSetting.