Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste artigo, você aprenderá os conceitos de alto nível em torno de gatilhos e associações para 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.
A associação a uma função é uma maneira de conectar declarativamente suas funções a outros recursos. As associações passam dados para sua função (uma associação de entrada) ou permitem que você escreva dados de sua função (uma associação de saída) usando parâmetros de associação. O gatilho de função é basicamente um tipo especial de vinculação de entrada.
Você pode misturar e combinar associações para atender ao cenário específico da função. As 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 seguintes exemplos de como você pode implementar funções:
| Cenário de exemplo | Gatilho | Associação de entrada | Associação de saída |
|---|---|---|---|
| Uma nova mensagem de fila chega, o que executa uma função para gravar em outra fila. | Fila* | Nenhuma | Fila* |
| Um trabalho agendado lê o conteúdo do Armazenamento de Blobs do Azure e cria um novo documento do Azure Cosmos DB. | Timer | 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. | Grade de Eventos | 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 associações juntos. Para obter um conjunto mais abrangente de cenários, consulte Cenários do Azure Functions.
Dica
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 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
O exemplo a seguir mostra uma função disparada por HTTP com uma associação de saída que grava uma mensagem em uma fila 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 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 MultiResponse objeto. A definição do objeto retorna HttpResponse à solicitação HTTP e grava uma mensagem em uma fila de armazenamento usando uma associaçã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 em C# para modelos de trabalho isolados.
As funções de script C# herdadas usam um function.json arquivo de definição. 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 associações anotando métodos e parâmetros específicos. Esse gatilho HTTP (@HttpTrigger) é definido no run método para uma função chamada HttpTriggerQueueOutput. A função escreve em uma fila de armazenamento que é 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 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 do Azure Functions versão 4, você configura gatilhos e associações usando objetos exportados do @azure/functions módulo. Para saber mais, confira o Guia de desenvolvedores do Node.js.
O http método no objeto exportado app define um gatilho HTTP. O método storageQueue em output define uma associaçã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 método storageQueue em output define uma associaçã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 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 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 de vinculação
Nem todos os serviços dão suporte a vinculações de entrada e de saída. Consulte sua extensão de associação específica para obter exemplos de código específicos para associações.
Os gatilhos e as associações são definidos de forma diferente, dependendo da linguagem de desenvolvimento. Selecione seu idioma na parte superior deste artigo.
Os nomes de gatilho e associação são limitados a caracteres alfanuméricos e
_, o sublinhado.
Tarefa para 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.
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 (associação de entrada) e gravar dados em um banco de dados (associação de saída) simultaneamente.
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 Azure | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Grade de Eventos | ✔ | ✔ | ✔ | ✔ | |
| Hubs de Evento | ✔ | ✔ | ✔ | ✔ | |
| HTTP e webhooks | ✔ | ✔ | ✔ | ✔ | |
| Hub IoT | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Aplicativos Móveis | ✔ | ✔ | ✔ | ||
| Protocolo de contexto de modelo | ✔ | ✔ | |||
| Hubs de Notificação | ✔ | ✔ | |||
| Armazenamento de Filas | ✔ | ✔ | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Barramento de Serviço | ✔ | ✔ | ✔ | ✔ | |
| Serviço Azure SignalR | ✔ | ✔ | ✔ | ✔ | |
| Armazenamento de Tabelas | ✔ | ✔ | ✔ | ✔ | |
| Timer | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
1O suporte à versão 1.x do runtime do Azure Functions será encerrado em 14 de setembro de 2026. Migre seus aplicativos para a versão 4.x para ter acesso ao suporte completo.
2 A partir da versão 2.x do runtime, todas as associações, exceto HTTP e temporizador, devem ser registradas. Confira Registrar extensões de associação do Azure Functions.
3 Não há suporte para gatilhos no plano de Consumo. Este tipo de associação requer gatilhos controlados pelo runtime.
4 Este tipo de associação tem suporte somente no Kubernetes, no Azure IoT Edge e em outros modos de auto-hospedagem.
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.
Há suporte para versões específicas de extensões de associação somente enquanto o SDK do 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 de consumo.
Exemplos de código para 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 de processo específico.
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
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 |
| Serviço do Azure SignalR |
Gatilho Entrada Saída |
|
| Armazenamento de Tabelas |
Entrada Saída |
|
| Timer | Gatilho | Link |
| Twilio | Saída | Link |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
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 |
| Serviço do Azure SignalR |
Gatilho Entrada Saída |
|
| Armazenamento de Tabelas |
Entrada Saída |
|
| Timer | Gatilho | Link |
| Twilio | Saída |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
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 |
|
| 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 |
| Serviço do Azure SignalR |
Gatilho Entrada Saída |
|
| Armazenamento de Tabelas |
Entrada Saída |
|
| Timer | Gatilho | |
| Twilio | Saída |
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
Gatilho Entrada Saída |
|
| Azure Cosmos DB |
Gatilho Entrada Saída |
|
| SQL do Azure |
Gatilho Entrada Saída |
|
| Grade de Eventos |
Gatilho Saída |
|
| Hubs de Eventos |
Gatilho Saída |
|
| Hub IoT |
Gatilho Saída |
|
| HTTP | Gatilho | Link |
| Armazenamento de Filas |
Gatilho Saída |
|
| RabbitMQ |
Gatilho Saída |
|
| SendGrid | Saída | |
| Barramento de Serviço |
Gatilho Saída |
|
| Serviço do Azure SignalR |
Gatilho Entrada Saída |
|
| Armazenamento de Tabelas |
Entrada Saída |
|
| Timer | Gatilho | |
| Twilio | Saída |
O código de ligação para Python depende da versão do modelo Python.
| Serviço | Exemplos | Exemplos |
|---|---|---|
| Armazenamento de Blobs |
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 |
|
| Hubs de Eventos |
Gatilho Saída |
|
| Hub IoT |
Gatilho Saída |
|
| HTTP | Gatilho | Link |
| Armazenamento de Filas |
Gatilho Saída |
|
| RabbitMQ |
Gatilho Saída |
|
| SendGrid | Saída | |
| Barramento de Serviço |
Gatilho Saída |
Link |
| Serviço do Azure SignalR |
Gatilho Entrada Saída |
|
| Armazenamento de Tabelas |
Entrada Saída |
|
| Timer | Gatilho | |
| Twilio | Saída |
Associações personalizadas
Você pode criar associações de entrada e saída personalizadas. Vinculações devem ser criadas no .NET, mas podem ser consumidas por qualquer linguagem suportada. Para obter mais informações sobre como criar associações personalizadas, veja Criar associações de entrada e saída personalizadas.