Partilhar via


Gatilhos e associações do Azure Functions

Neste artigo, você aprenderá os conceitos de alto nível em torno de gatilhos e ligações para funções.

Os gatilhos fazem com que uma função seja executada. Um gatilho define como uma função é invocada, e uma função deve ter exatamente um gatilho. Os gatilhos também podem passar dados para sua função, como você faria com chamadas de método.

A vinculação a uma função é uma maneira de conectar declarativamente suas funções a outros recursos. As ligações passam dados para sua função (uma ligação de entrada) ou permitem que você grave dados de sua função (uma ligação de saída) usando parâmetros de vinculação. Seu gatilho de função é essencialmente um tipo especial de ligação de entrada.

Você pode misturar e combinar ligações para se adequar ao cenário específico da sua função. As ligações são opcionais e uma função pode ter uma ou várias ligações de entrada e/ou saída.

Gatilhos e associações permitem evitar a necessidade de codificar diretamente o acesso a outros serviços. A sua função recebe dados (por exemplo, os conteúdos de uma mensagem de fila) em parâmetros de função. Pode enviar dados (por exemplo, para criar uma mensagem de fila) através do valor de retorno da função.

Considere os seguintes exemplos de como você pode implementar funções:

Cenário de exemplo Acionador Vinculação de entrada Vinculação de saída
Chega uma nova mensagem de fila, que executa uma função para gravar em outra fila. Fila* Nenhum Fila*
Um trabalho agendado lê o conteúdo do Azure Blob Storage e cria um novo documento do Azure Cosmos DB. Temporizador Armazenamento Blob Azure Cosmos DB
O Azure Event Grid é usado para ler uma imagem do Blob Storage e um documento do Azure Cosmos DB para enviar um email. Event Grid Blob Storage e Azure Cosmos DB SendGrid

* Representa filas diferentes.

Esses exemplos não devem ser exaustivos, mas ilustram como você pode usar gatilhos e ligações juntos. Para um conjunto mais abrangente de cenários, veja cenários do Azure Functions.

Sugestão

O Azure Functions não exige que uses bindings de entrada e saída para te ligares aos serviços do Azure. Podes sempre criar um cliente Azure SDK no teu código e usá-lo para as transferências de dados. Para obter mais informações, consulte Conectar-se a serviços.

Definições de gatilho e associação

O exemplo seguinte mostra uma função ativada por HTTP com uma ligação de saída que escreve uma mensagem numa fila do Azure Storage.

Para funções de biblioteca de classes C#, você configura gatilhos e associações decorando métodos e parâmetros com atributos C#. O atributo específico que você aplica pode depender do modelo de tempo de execução do C#:

O gatilho HTTP (HttpTrigger) é definido no Run método para uma função chamada HttpExample que retorna um objeto MultiResponse:

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)

Este exemplo mostra a definição de MultiResponse objeto. A definição de objeto retorna HttpResponse para a solicitação HTTP e grava uma mensagem em uma fila de armazenamento usando uma QueueOutput vinculação:

public class MultiResponse
{
    [QueueOutput("outqueue", Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

Para obter mais informações, consulte o guia C# para modelos de trabalho isolados.

As funções de script C# herdadas usam um ficheiro de definição function.json. Para mais informações, consulte a referência para desenvolvedores Azure Functions script C# (.csx).

Para funções Java, configuras triggers e bindings anotando métodos e parâmetros específicos. Esse gatilho HTTP (@HttpTrigger) é definido no run método para uma função chamada HttpExample. A função escreve numa fila de armazenamento chamada outqueue, definida pela anotação @QueueOutput no parâmetro msg.

@FunctionName("HttpExample")
public HttpResponseMessage run(
        @HttpTrigger(name = "req", methods = {HttpMethod.GET, HttpMethod.POST}, authLevel = AuthorizationLevel.ANONYMOUS) 
        HttpRequestMessage<Optional<String>> request, 
        @QueueOutput(name = "msg", queueName = "outqueue", 
        connection = "AzureWebJobsStorage") OutputBinding<String> msg, 
        final ExecutionContext context) {
    context.getLogger().info("Java HTTP trigger processed a request.");

Para mais informações, consulte o guia para desenvolvedores Java .

A forma como defines triggers e bindings para funções Node.js depende da versão específica do Node.js utilizado nas Azure Functions.

No Node.js para Azure Functions versão 4, configuras triggers e bindings usando objetos exportados do módulo @azure/functions. Para obter mais informações, consulte o Node.js guia do desenvolvedor.

O http método no objeto exportado app define um gatilho HTTP. O storageQueue método em output define uma ligação de saída neste gatilho.

const { app, output } = require('@azure/functions');

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: async (request, context) => {
        const body = await request.text();
        context.extraOutputs.set(queueOutput, body);
        return { body: 'Created queue item.' };
    },
});

O http método no objeto exportado app define um gatilho HTTP. O storageQueue método em output define uma ligação de saída neste gatilho.

import { app, HttpRequest, HttpResponseInit, InvocationContext, output } from '@azure/functions';

const queueOutput = output.storageQueue({
    queueName: 'outqueue',
    connection: 'MyStorageConnectionAppSetting',
});

export async function httpTrigger1(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
    const body = await request.text();
    context.extraOutputs.set(queueOutput, body);
    return { body: 'Created queue item.' };
}

app.http('httpTrigger1', {
    methods: ['GET', 'POST'],
    authLevel: 'anonymous',
    extraOutputs: [queueOutput],
    handler: httpTrigger1,
});

Este arquivo de exemplo function.json define a função:

    {
      "authLevel": "function",
      "type": "httpTrigger",
      "direction": "in",
      "name": "Request",
      "methods": [
        "get",
        "post"
      ]
    },
    {
      "type": "http",
      "direction": "out",
      "name": "Response"
    },
    {
      "type": "queue",
      "direction": "out",
      "name": "msg",
      "queueName": "outqueue",
      "connection": "AzureWebJobsStorage"
    }
  ]
}

Para obter mais informações, consulte o guia do desenvolvedor do PowerShell.

A forma como a função é definida depende da versão do Python for Azure Functions:

No Python for Azure Functions versão 2, defines a função diretamente em código usando decoradores:

app = func.FunctionApp(http_auth_level=func.AuthLevel.ANONYMOUS)

@app.route(route="HttpExample")
@app.queue_output(arg_name="msg", queue_name="outqueue", connection="AzureWebJobsStorage")
def HttpExample(req: func.HttpRequest, msg: func.Out [func.QueueMessage]) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

Considerações vinculativas

  • Nem todos os serviços suportam ligações de entrada e saída. Consulte sua extensão de vinculação específica para obter exemplos de código específicos para associações.

  • Gatilhos e ligações são definidos de forma diferente dependendo da linguagem de desenvolvimento. Certifique-se de selecionar seu idioma na parte superior deste artigo.

  • Os nomes de gatilho e ligação são limitados a caracteres alfanuméricos e _, o sublinhado.

Tarefa para adicionar ligações a uma função

Você pode conectar sua função a outros serviços usando ligações de entrada ou saída. Adicione uma associação adicionando suas definições específicas à sua função. Para saber como, veja Add bindings a uma função existente em Azure Functions.

O Azure Functions suporta múltiplas ligações, que devem ser configuradas corretamente. Por exemplo, uma função pode ler dados de uma fila (ligação de entrada) e gravar dados em um banco de dados (associação de saída) simultaneamente.

Vinculações suportadas

Esta tabela mostra as ligações suportadas nas principais versões do runtime do Azure Functions:

Tipo 4.x1 1.x2 Acionador Entrada Resultado
Blob Storage
Azure Cosmos DB
Azure Data Explorer
Azure SQL
Dapr4
Grelha de Eventos
Hubs de Eventos
HTTP e webhooks
IoT Hub
Kafka3
Aplicações Móveis
Protocolo de contexto do modelo
Hubs de Notificação
Armazenamento em Fila
Redis
RabbitMQ3
SendGrid
Service Bus
Azure SignalR Service
Armazenamento de Tabelas
Temporizador
Twilio
  1. Registe todas as ligações exceto HTTP e temporizador. Veja Registar extensões de ligação do Azure Functions. Este passo não é necessário ao usar a versão 1.x do runtime de Functions.
  2. O suporte para a versão 1.x do runtime Azure Functions termina a 14 de setembro de 2026. Migra as tuas aplicações para a versão 4.x para suporte total.
  3. Os gatilhos não são suportados no plano de Consumo. Este tipo de vinculação requer triggers acionados por tempo de execução.
  4. Este tipo de binding é suportado apenas no Kubernetes, Azure IoT Edge e outros modos auto-hospedados.

Para obter informações sobre quais vinculações estão em visualização ou são aprovadas para uso em produção, consulte Idiomas Suportados.

Versões específicas de extensões de vinculação são suportadas somente enquanto o SDK de serviço subjacente é suportado. As alterações no suporte na versão do SDK do serviço subjacente afetam o suporte para a extensão consumidora.

Tipos de SDK

As extensões de binding do Azure Functions usam SDKs de serviço do Azure para se ligar aos serviços do Azure. Os tipos específicos de SDK usados pelas associações podem influenciar a maneira como lida com os dados nas suas funções. Alguns bindings suportam tipos específicos de SDK que proporcionam funcionalidades mais ricas e melhor integração com o serviço, enquanto outros usam tipos mais genéricos como strings ou arrays de bytes. Quando disponível, usar tipos específicos de SDK pode proporcionar benefícios como melhor segurança de tipos, manipulação de dados mais fácil e acesso a funcionalidades específicas do serviço.

Esta tabela indica extensões de ligação que atualmente suportam tipos de SDK:

Extension Types Nível de suporte
Azure Blob Storage BlobClient
BlobContainerClient
BlockBlobClient
PageBlobClient
AppendBlobClient
Gatilho: GA
Entrada: GA
Azure Cosmos DB CosmosClient
Database
Container
Entrada: GA
Azure Event Grid CloudEvent
EventGridEvent
Gatilho: GA
Azure Event Hubs EventData
EventHubProducerClient
Gatilho: GA
Azure Queue Storage QueueClient
QueueMessage
Gatilho: GA
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Gatilho: GA
Azure Table Storage TableClient
TableEntity
Entrada: GA

Considerações para os tipos de SDK:

  • Ao usar expressões de associação que dependem de dados de gatilho, os tipos de SDK para o gatilho em si não podem ser usados.
  • Para cenários de saída onde podes usar um tipo de SDK, cria e trabalha diretamente com clientes SDK em vez de usar uma ligação de saída.
  • O gatilho Azure Cosmos DB usa o feed de alteração Azure Cosmos DB e expõe os itens do feed de alteração como tipos serializáveis em JSON. Como resultado, os tipos de SDK não são suportados para este trigger.

Para mais informações, consulte os tipos de SDK no guia para programadores de C#.

Extension Types Nível de suporte Exemplos
Azure Blob Storage BlobClient
ContainerClient
StorageStreamDownloader
Gatilho: GA
Entrada: GA
Quickstart
BlobClient
ContainerClient
StorageStreamDownloader
Azure Cosmos DB CosmosClient
DatabaseProxy
ContainerProxy
Entrada: pré-visualização Quickstart
ContainerProxy
CosmosClient
DatabaseProxy
Azure Event Hubs EventData Gatilho: prévia Quickstart
EventData
Azure Service Bus ServiceBusReceivedMessage Gatilho: prévia Quickstart
ServiceBusReceivedMessage

Considerações para os tipos de SDK:

  • Para cenários de saída onde podes usar um tipo de SDK, cria e trabalha diretamente com clientes SDK em vez de usar uma ligação de saída.
  • O gatilho Azure Cosmos DB usa o feed de alteração Azure Cosmos DB e expõe os itens do feed de alteração como tipos serializáveis em JSON. Como resultado, os tipos de SDK não são suportados para este trigger.

Os tipos de SDK são suportados apenas quando se utiliza o modelo de programação Python v2. Para mais informações, consulte SDK type bindings no guia para desenvolvedores Python.

Extension Types Nível de suporte
Azure Blob Storage BlobClient
ContainerClient
ReadableStream
Preview
Azure Service Bus ServiceBusClient
ServiceBusReceiver
ServiceBusSender
ServiceBusMessage
Preview

Os tipos de SDK são suportados apenas quando se utiliza o modelo de programação Node v4. Para mais informações, consulte os tipos de SDK no guia de programação Node.js.

Extension Types Nível de suporte
Azure Blob Storage BlobClient
BlobContainerClient
Preview

Para mais informações, veja c0 no guia para programadores Java.

Importante

Os tipos de SDK não são atualmente suportados para aplicações PowerShell.

Exemplos de código para ligações

Use a tabela a seguir para encontrar mais exemplos de tipos de vinculação específicos que mostram como trabalhar com associações em suas funções. Primeiro, escolha a guia de idioma que corresponde ao seu projeto.

O código de vinculação para C# depende do modelo de processo específico.

Serviço Exemplos Exemplos
Armazenamento Blob Trigger
Entrada
Output
Link
Azure Cosmos DB Trigger
Entrada
Output
Link
Azure Data Explorer Entrada
Output
Link
Azure SQL Trigger
Entrada
Output
Link
Event Grid Trigger
Output
Link
Hubs de Eventos Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Armazenamento de Filas Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Link
Azure SignalR Service Trigger
Entrada
Output
Armazenamento de Tabelas Entrada
Output
Temporizador Trigger Link
Twilio Output Link
Serviço Exemplos Exemplos
Armazenamento Blob Trigger
Entrada
Output
Link
Azure Cosmos DB Trigger
Entrada
Output
Link
Azure Data Explorer Entrada
Output
Link
Azure SQL Trigger
Entrada
Output
Event Grid Trigger
Output
Link
Hubs de Eventos Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Armazenamento de Filas Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Link
Azure SignalR Service Trigger
Entrada
Output
Armazenamento de Tabelas Entrada
Output
Temporizador Trigger Link
Twilio Output
Serviço Exemplos Exemplos
Armazenamento Blob Trigger
Entrada
Output
Link
Azure Cosmos DB Trigger
Entrada
Output
Link
Azure Data Explorer Entrada
Output
Azure SQL Trigger
Entrada
Output
Link
Event Grid Trigger
Output
Hubs de Eventos Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Armazenamento de Filas Trigger
Output
Link
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Link
Azure SignalR Service Trigger
Entrada
Output
Armazenamento de Tabelas Entrada
Output
Temporizador Trigger
Twilio Output
Serviço Exemplos Exemplos
Armazenamento Blob Trigger
Entrada
Output
Azure Cosmos DB Trigger
Entrada
Output
Azure SQL Trigger
Entrada
Output
Event Grid Trigger
Output
Hubs de Eventos Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Armazenamento de Filas Trigger
Output
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Azure SignalR Service Trigger
Entrada
Output
Armazenamento de Tabelas Entrada
Output
Temporizador Trigger
Twilio Output

O código de vinculação para Python depende da versão do modelo do Python.

Serviço Exemplos Exemplos
Armazenamento Blob Trigger
Entrada
Output
Link
Azure Cosmos DB Trigger
Entrada
Output
Link
Azure Data Explorer Entrada
Output
Azure SQL Trigger
Entrada
Output
Link
Event Grid Trigger
Output
Hubs de Eventos Trigger
Output
IoT Hub Trigger
Output
HTTP Trigger Link
Armazenamento de Filas Trigger
Output
RabbitMQ Trigger
Output
SendGrid Output
Service Bus Trigger
Output
Link
Azure SignalR Service Trigger
Entrada
Output
Armazenamento de Tabelas Entrada
Output
Temporizador Trigger
Twilio Output

Ligações personalizadas

Você pode criar ligações de entrada e saída personalizadas. Os bindings devem ser escritos em .NET, mas podem ser consumidos a partir de qualquer linguagem suportada. Para mais informações sobre a criação de bindings personalizados, veja Criação de bindings personalizados de entrada e saída.