Conceitos de gatilhos e de associações do Azure Functions
Neste artigo, você aprenderá os conceitos de alto nível em torno dos gatilhos e das associações de funções.
Os gatilhos fazem com que as funções sejam executadas. Um gatilho define como uma função é invocada e uma função deve ter exatamente um gatilho. Gatilhos também podem passar dados para sua função, como você faria com chamadas de método.
Vinculação a uma função é uma maneira de conectar declarativamente suas funções a outros recursos. As vinculações passam dados para sua função (uma vinculação de entrada) ou permitem que você grave dados da sua função (uma vinculação de saída) usando parâmetros de vinculação. O gatilho de função é basicamente um tipo especial de vinculação de entrada.
Você pode misturar e combinar vinculações diferentes para atender ao cenário específico da função. Associações são opcionais e uma função pode ter uma ou várias associações de entrada e/ou saída.
Gatilhos e associações permitem evitar codificar o acesso a outros serviços. Sua função recebe dados (por exemplo, o conteúdo de uma mensagem da fila) em parâmetros de função. Você envia dados (por exemplo, para criar uma mensagem da fila) usando o valor retornado da função.
Considere os exemplos a seguir de como você pode implementar diferentes funções.
Cenário de exemplo | Gatilho | Associação de entrada | Associação de saída |
---|---|---|---|
Uma nova mensagem de fila chega e executa uma função para gravar em outra fila. | Fila* | Nenhuma | Fila* |
Um trabalho agendado lê o conteúdo do Armazenamento de Blobs e cria um documento do Azure Cosmos DB. | Temporizador | Armazenamento de Blobs | Azure Cosmos DB |
A Grade de Eventos é usada para ler uma imagem do Armazenamento de Blobs e um documento do Azure Cosmos DB para enviar um email. | Grade de Eventos | Armazenamento de Blobs e Azure Cosmos DB | SendGrid |
* Representa filas diferentes
Esses exemplos não são exaustivos, mas são fornecidos para ilustrar como você pode usar gatilhos e associações conjuntamente. Para obter um conjunto mais abrangente de cenários, consulte Cenários do Azure Functions.
Dica
O Functions não exige o uso de vinculações de entrada e de saída para se conectar aos serviços do Azure. Você sempre pode criar um cliente do SDK do Azure em seu código e usá-lo para as transferências de dados. Para obter mais informações, confira Conectar aos serviços.
Definições de associação e gatilho
Os gatilhos e as associações são definidos de forma diferente, dependendo da linguagem de desenvolvimento. Não deixe de selecionar o idioma na parte superior do artigo.
As vinculações podem ser de entrada ou de saída. Nem todos os serviços dão suporte a vinculações de entrada e de saída. Consulte sua extensão de vinculação específica para obter exemplos de código de vinculações específicas.
Este exemplo mostra uma função disparada por HTTP com uma vinculação de saída que grava uma mensagem em uma fila do Armazenamento do Azure.
Para funções de biblioteca de classes C#, gatilhos e vinculações são configurados por meio da decoração de métodos e parâmetros com atributos C#, em que o atributo específico aplicado pode depender do modelo de runtime do C#:
O gatilho HTTP (HttpTrigger
) é definido no método Run
para uma função nomeada HttpExample
que retorna um objetoMultiResponse
:
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
Este exemplo mostra a definição de objeto MultiResponse
que retorna uma HttpResponse
para a solicitação HTTP e também grava uma mensagem em uma fila de armazenamento usando uma vinculação QueueOutput
:
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 do modelo de trabalho isolado em C#.
As funções de script C# herdadas usam um arquivo 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, gatilhos e vinculações são configurados por meio da anotação de métodos e parâmetros específicos. Esse gatilho HTTP (@HttpTrigger
) é definido no método run
para uma função nomeada HttpTriggerQueueOutput
, que grava em uma fila de armazenamento definida pela anotação @QueueOutput
no parâmetro message
:
@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 saber mais, confira o Guia do desenvolvedor Java.
A maneira como gatilhos e vinculações são definidos para funções Node.js depende da versão específica do Node.js para o Functions:
No Node.js do Functions versão 4, você configura gatilhos e vinculações usando objetos exportados do módulo @azure/functions
. Para saber mais, confira o Guia de desenvolvedores do Node.js.
Este exemplo é uma função disparada por HTTP que cria um item de fila para cada solicitação HTTP recebida.
O método http
no objeto app
exportado define um gatilho HTTP e o método storageQueue
em output
define uma vinculação de saída nesse 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 método http
no objeto app
exportado define um gatilho HTTP e o método storageQueue
em output
define uma vinculação de saída nesse 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 function.json
de exemplo 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 de desenvolvedor do PowerShell.
A maneira como a função é definida depende da versão do Python para o Functions:
No Python para o 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.')
Adicionar associações a uma função
Você pode conectar a função a outros serviços usando associações de entrada ou saída. Adicione uma associação adicionando suas definições específicas à função. Para saber mais, veja Adicionar associações a uma função existente no Azure Functions.
Associações com suporte
Esta tabela mostra as associações que são compatíveis com as versões principais do Azure Functions Runtime:
Tipo | 1.x1 | 2.x e posterior2 | Gatilho | Entrada | Saída |
---|---|---|---|---|---|
Armazenamento de Blobs | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Data Explorer | ✔ | ✔ | ✔ | ||
SQL do Azure | ✔ | ✔ | ✔ | ✔ | |
Dapr4 | ✔ | ✔ | ✔ | ✔ | |
Grade de Eventos | ✔ | ✔ | ✔ | ✔ | |
Hubs de Evento | ✔ | ✔ | ✔ | ✔ | |
HTTP e webhooks | ✔ | ✔ | ✔ | ✔ | |
Hub IoT | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
Aplicativos Móveis | ✔ | ✔ | ✔ | ||
Hubs de Notificação | ✔ | ✔ | |||
Armazenamento de filas | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | |||
RabbitMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Barramento de Serviço | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Armazenamento de tabelas | ✔ | ✔ | ✔ | ✔ | |
Timer | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
Observações:
- O suporte da versão 1.x do runtime do Azure Functions terminará em 14 de setembro de 2026. Recomendamos que você migre seus aplicativos para a versão 4.x para receber suporte completo.
- A partir do runtime da versão 2.x, todas as associações, exceto HTTP e Temporizador, devem ser registradas. Confira Registrar as extensões de associação.
- Não há suporte para gatilhos no plano de consumo. Requer gatilhos controlados por runtime.
- Tem suporte apenas no Kubernetes, no IoT Edge e em outros modos auto-hospedados.
Para obter informações sobre quais associações estão na visualização ou são aprovadas para o uso de produção, consulte Idiomas com suporte.
Só há suporte para versões de extensão de associação específicas enquanto há suporte para o SDK do serviço subjacente. As alterações no suporte na versão do SDK do serviço subjacente afetam o suporte para a extensão de consumo.
Exemplos de código de associações
Use a tabela a seguir para encontrar mais exemplos de tipos de vinculação específicos, que mostram como trabalhar com vinculações nas funções. Primeiro, escolha a guia da linguagem que corresponde ao seu projeto.
O código de associação para C# depende do modelo do processo específico.
Serviço | Exemplos | Exemplos |
---|---|---|
Armazenamento de blob | Gatilho Entrada Saída |
Link |
Azure Cosmos DB | Gatilho Entrada Saída |
Link |
Azure Data Explorer | Entrada Saída |
Link |
SQL do Azure | Gatilho Entrada Saída |
Link |
Grade de Eventos | Gatilho Saída |
Link |
Hubs de Eventos | Gatilho Saída |
|
Hub IoT | Gatilho Saída |
|
HTTP | Gatilho | Link |
Armazenamento de filas | Gatilho Saída |
Link |
RabbitMQ | Gatilho Saída |
|
SendGrid | Saída | |
Barramento de Serviço | Gatilho Saída |
Link |
SignalR | Gatilho Entrada Saída |
|
Armazenamento de tabela | Entrada Saída |
|
Temporizador | Gatilho | Link |
Twilio | Saída | Link |
Serviço | Exemplos | Exemplos |
---|---|---|
Armazenamento de blob | Gatilho Entrada Saída |
Link |
Azure Cosmos DB | Gatilho Entrada Saída |
Link |
Azure Data Explorer | Entrada Saída |
Link |
SQL do Azure | Gatilho Entrada Saída |
|
Grade de Eventos | Gatilho Saída |
Link |
Hubs de Eventos | Gatilho Saída |
|
Hub IoT | Gatilho Saída |
|
HTTP | Gatilho | Link |
Armazenamento de filas | Gatilho Saída |
Link |
RabbitMQ | Gatilho Saída |
|
SendGrid | Saída | |
Barramento de Serviço | Gatilho Saída |
Link |
SignalR | Gatilho Entrada Saída |
|
Armazenamento de tabela | Entrada Saída |
|
Temporizador | Gatilho | Link |
Twilio | Saída | Link |
Serviço | Exemplos | Exemplos |
---|---|---|
Armazenamento de blob | Gatilho Entrada Saída |
Link |
Azure Cosmos DB | Gatilho Entrada Saída |
Link |
Azure Data Explorer | Entrada Saída |
|
SQL do Azure | Gatilho Entrada Saída |
Link |
Grade de Eventos | Gatilho Saída |
Link |
Hubs de Eventos | Gatilho Saída |
|
Hub IoT | Gatilho Saída |
|
HTTP | Gatilho | Link |
Armazenamento de filas | Gatilho Saída |
Link |
RabbitMQ | Gatilho Saída |
|
SendGrid | Saída | |
Barramento de Serviço | Gatilho Saída |
Link |
SignalR | Gatilho Entrada Saída |
|
Armazenamento de tabela | Entrada Saída |
|
Temporizador | Gatilho | Link |
Twilio | Saída | Link |
Serviço | Exemplos | Exemplos |
---|---|---|
Armazenamento de blob | Gatilho Entrada Saída |
Link |
Azure Cosmos DB | Gatilho Entrada Saída |
Link |
SQL do Azure | Gatilho Entrada Saída |
|
Grade de Eventos | Gatilho Saída |
Link |
Hubs de Eventos | Gatilho Saída |
|
Hub IoT | Gatilho Saída |
|
HTTP | Gatilho | Link |
Armazenamento de filas | Gatilho Saída |
Link |
RabbitMQ | Gatilho Saída |
|
SendGrid | Saída | |
Barramento de Serviço | Gatilho Saída |
Link |
SignalR | Gatilho Entrada Saída |
|
Armazenamento de tabela | Entrada Saída |
|
Temporizador | Gatilho | Link |
Twilio | Saída | Link |
O código de ligação para Python depende da versão do modelo Python.
Serviço | Exemplos | Exemplos |
---|---|---|
Armazenamento de blob | Gatilho Entrada Saída |
Link |
Azure Cosmos DB | Gatilho Entrada Saída |
Link |
Azure Data Explorer | Entrada Saída |
|
SQL do Azure | Gatilho Entrada Saída |
Link |
Grade de Eventos | Gatilho Saída |
Link |
Hubs de Eventos | Gatilho Saída |
|
Hub IoT | Gatilho Saída |
|
HTTP | Gatilho | Link |
Armazenamento de filas | Gatilho Saída |
Link |
RabbitMQ | Gatilho Saída |
|
SendGrid | Saída | |
Barramento de Serviço | Gatilho Saída |
Link |
SignalR | Gatilho Entrada Saída |
|
Armazenamento de tabela | Entrada Saída |
|
Temporizador | Gatilho | Link |
Twilio | Saída | Link |
Associações personalizadas
Você pode criar associações de entrada e saída personalizadas. As associações devem ser criadas no .NET, mas podem ser consumidas em qualquer linguagem com suporte. Para obter mais informações sobre como criar associações personalizadas, veja Criar associações de entrada e saída personalizadas.