Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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 o acesso de codificação 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 Armazenamento de Blobs do Azure e cria um novo documento do Azure Cosmos DB. | Temporizador | Armazenamento de Blobs | Azure Cosmos DB |
| A Grade de Eventos do Azure é usada para ler uma imagem do Armazenamento de Blobs e um documento do Azure Cosmos DB para enviar um email. | Event Grid | Armazenamento de Blobs 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 obter um conjunto mais abrangente de cenários, consulte Cenários do Azure Functions.
Sugestão
O Azure Functions não exige que você use associações de entrada e saída para se conectar aos serviços do Azure. Você sempre pode criar um cliente SDK do Azure em seu código e usá-lo em vez disso para suas transferências de dados. Para obter mais informações, consulte Conectar-se a serviços.
Definições de desencadeamento e vinculativas
O exemplo a seguir mostra uma função disparada por HTTP com uma associação de saída que grava uma mensagem numa fila de mensagens do Armazenamento do Azure.
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 static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
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 HttpResponseData 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 obter mais informações, consulte a referência do desenvolvedor do script C# do Azure Functions (.csx).
Para funções Java, você configura gatilhos e ligações 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 obter mais informações, consulte o Guia do desenvolvedor Java.
A maneira como você define gatilhos e associações para funções Node.js depende da versão específica do Node.js para o Azure Functions:
No Node.js para o Azure Functions versão 4, você configura gatilhos e associações usando objetos exportados do @azure/functions módulo. 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 maneira como a função é definida depende da versão do Python para Azure Functions:
No Python para Azure Functions versão 2, você define a função diretamente no 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, consulte Adicionar associações a uma função existente no Azure Functions.
O Azure Functions dá suporte a várias associaçõ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 associações com suporte nas versões principais do tempo de execução do Azure Functions:
| Tipo | 4.x1 | 1.x2 | Acionador | Entrada | Resultado |
|---|---|---|---|---|---|
| Armazenamento de Blobs | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Data Explorer | ✔ | ✔ | ✔ | ||
| Azure SQL | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Grelha de Eventos | ✔ | ✔ | ✔ | ✔ | |
| Hubs de Eventos | ✔ | ✔ | ✔ | ✔ | |
| HTTP and webhooks (HTTP e webhooks) | ✔ | ✔ | ✔ | ✔ | |
| Hub IoT | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Aplicações Móveis | ✔ | ✔ | ✔ | ||
| Protocolo de contexto do modelo | ✔ | ✔ | |||
| Hubs de Notificação | ✔ | ✔ | |||
| Armazenamento em Fila | ✔ | ✔ | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ | ✔ | |
| CoelhoMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Barramento de Serviço | ✔ | ✔ | ✔ | ✔ | |
| Serviço Azure SignalR | ✔ | ✔ | ✔ | ✔ | |
| Armazenamento de Tabelas | ✔ | ✔ | ✔ | ✔ | |
| Temporizador | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
- Registe todas as ligações exceto HTTP e temporizador. Consulte Registrar extensões de vinculação do Azure Functions. Este passo não é necessário ao usar a versão 1.x do runtime de Functions.
- O suporte termina para a versão 1.x do runtime Azure Functions a 14 de setembro de 2026. Migra as tuas aplicações para a versão 4.x para suporte total.
- Os gatilhos não são suportados no plano de Consumo. Esse tipo de associação requer gatilhos controlados por tempo de execução.
- Este tipo de binding é suportado apenas em 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 ligação Azure Functions usam SDKs de serviços Azure para se ligar aos serviços 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 |
|---|---|---|
| Armazenamento de Blobs do Azure | BlobClientBlobContainerClientBlockBlobClientPageBlobClientAppendBlobClient |
Gatilho: GA Entrada: GA |
| Azure Cosmos DB | CosmosClientDatabaseContainer |
Entrada: GA |
| Grade de Eventos do Azure | CloudEventEventGridEvent |
Trigger: GA |
| Hubs de Eventos do Azure | EventDataEventHubProducerClient |
Gatilho: GA |
| Armazenamento de Filas do Azure | QueueClientQueueMessage |
Gatilho: GA |
| Barramento de Serviço do Azure | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Gatilho: GA |
| Armazenamento de Tabelas do Azure | TableClientTableEntity |
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 trigger do Azure Cosmos DB utiliza o feed de alterações do Azure Cosmos DB e expõe os itens do feed de alterações 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 |
|---|---|---|---|
| Armazenamento de Blobs do Azure | BlobClientContainerClientStorageStreamDownloader |
Gatilho: GA Entrada: GA |
Início rápidoBlobClientContainerClientStorageStreamDownloader |
| Azure Cosmos DB | CosmosClientDatabaseProxyContainerProxy |
Entrada: pré-visualização |
Início rápidoContainerProxyCosmosClientDatabaseProxy |
| Hubs de Eventos do Azure | EventData |
Gatilho: prévia |
Início rápidoEventData |
| Barramento de Serviço do Azure | ServiceBusReceivedMessage |
Gatilho: pré-visualização |
Início rápidoServiceBusReceivedMessage |
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 trigger do Azure Cosmos DB utiliza o feed de alterações do Azure Cosmos DB e expõe os itens do feed de alterações 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, veja as ligações de tipos SDK no guia para programadores em Python.
| Extension | Types | Nível de suporte |
|---|---|---|
| Armazenamento de Blobs do Azure | BlobClientContainerClientReadableStream |
Preview |
| Barramento de Serviço do Azure | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
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 |
|---|---|---|
| Armazenamento de Blobs do Azure | BlobClientBlobContainerClient |
Preview |
Para mais informações, consulte os tipos de SDK no guia para programadores de 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 de Blobs |
Desencadeador Entrada Realização |
Ligação |
| Azure Cosmos DB |
Desencadeador Entrada Realização |
Ligação |
| Azure Data Explorer |
Entrada Realização |
Ligação |
| SQL do Azure |
Desencadeador Entrada Realização |
Ligação |
| Event Grid |
Desencadeador Realização |
Ligação |
| Hubs de Eventos |
Desencadeador Realização |
|
| Hub IoT |
Desencadeador Realização |
|
| HTTP | Desencadeador | Ligação |
| Armazenamento de Filas |
Desencadeador Realização |
Ligação |
| CoelhoMQ |
Desencadeador Realização |
|
| SendGrid | Realização | |
| Barramento de Serviço |
Desencadeador Realização |
Ligação |
| Azure SignalR Service |
Desencadeador Entrada Realização |
|
| Armazenamento de Tabelas |
Entrada Realização |
|
| Temporizador | Desencadeador | Ligação |
| Twilio | Realização | Ligação |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Desencadeador Entrada Realização |
Ligação |
| Azure Cosmos DB |
Desencadeador Entrada Realização |
Ligação |
| Azure Data Explorer |
Entrada Realização |
Ligação |
| SQL do Azure |
Desencadeador Entrada Realização |
|
| Event Grid |
Desencadeador Realização |
Ligação |
| Hubs de Eventos |
Desencadeador Realização |
|
| Hub IoT |
Desencadeador Realização |
|
| HTTP | Desencadeador | Ligação |
| Armazenamento de Filas |
Desencadeador Realização |
Ligação |
| CoelhoMQ |
Desencadeador Realização |
|
| SendGrid | Realização | |
| Barramento de Serviço |
Desencadeador Realização |
Ligação |
| Azure SignalR Service |
Desencadeador Entrada Realização |
|
| Armazenamento de Tabelas |
Entrada Realização |
|
| Temporizador | Desencadeador | Ligação |
| Twilio | Realização |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Desencadeador Entrada Realização |
Ligação |
| Azure Cosmos DB |
Desencadeador Entrada Realização |
Ligação |
| Azure Data Explorer |
Entrada Realização |
|
| SQL do Azure |
Desencadeador Entrada Realização |
Ligação |
| Event Grid |
Desencadeador Realização |
|
| Hubs de Eventos |
Desencadeador Realização |
|
| Hub IoT |
Desencadeador Realização |
|
| HTTP | Desencadeador | Ligação |
| Armazenamento de Filas |
Desencadeador Realização |
Ligação |
| CoelhoMQ |
Desencadeador Realização |
|
| SendGrid | Realização | |
| Barramento de Serviço |
Desencadeador Realização |
Ligação |
| Azure SignalR Service |
Desencadeador Entrada Realização |
|
| Armazenamento de Tabelas |
Entrada Realização |
|
| Temporizador | Desencadeador | |
| Twilio | Realização |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Desencadeador Entrada Realização |
|
| Azure Cosmos DB |
Desencadeador Entrada Realização |
|
| SQL do Azure |
Desencadeador Entrada Realização |
|
| Event Grid |
Desencadeador Realização |
|
| Hubs de Eventos |
Desencadeador Realização |
|
| Hub IoT |
Desencadeador Realização |
|
| HTTP | Desencadeador | Ligação |
| Armazenamento de Filas |
Desencadeador Realização |
|
| CoelhoMQ |
Desencadeador Realização |
|
| SendGrid | Realização | |
| Barramento de Serviço |
Desencadeador Realização |
|
| Azure SignalR Service |
Desencadeador Entrada Realização |
|
| Armazenamento de Tabelas |
Entrada Realização |
|
| Temporizador | Desencadeador | |
| Twilio | Realização |
O código de vinculação para Python depende da versão do modelo Python.
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Desencadeador Entrada Realização |
Ligação |
| Azure Cosmos DB |
Desencadeador Entrada Realização |
Ligação |
| Azure Data Explorer |
Entrada Realização |
|
| SQL do Azure |
Desencadeador Entrada Realização |
Ligação |
| Event Grid |
Desencadeador Realização |
|
| Hubs de Eventos |
Desencadeador Realização |
|
| Hub IoT |
Desencadeador Realização |
|
| HTTP | Desencadeador | Ligação |
| Armazenamento de Filas |
Desencadeador Realização |
|
| CoelhoMQ |
Desencadeador Realização |
|
| SendGrid | Realização | |
| Barramento de Serviço |
Desencadeador Realização |
Ligação |
| Azure SignalR Service |
Desencadeador Entrada Realização |
|
| Armazenamento de Tabelas |
Entrada Realização |
|
| Temporizador | Desencadeador | |
| Twilio | Realização |
Ligações personalizadas
Você pode criar ligações de entrada e saída personalizadas. As ligações devem ser criadas no .NET, mas podem ser consumidas a partir de qualquer idioma suportado. Para obter mais informações sobre como criar associações personalizadas, consulte Criando ligações de entrada e saída personalizadas.