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 HttpExample. A função grava em uma fila de armazenamento chamada outqueue definida no parâmetro @QueueOutput pela anotação 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 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 | 4.x1 | 1.x2 | 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 | ✔ | ✔ | ✔ |
- Registre todas as associações, exceto HTTP e temporizador. Confira Registrar extensões de associação do Azure Functions. Esta etapa não é necessária ao usar a versão 1.x do runtime do Functions.
- O suporte termina para a versão 1.x do runtime do Azure Functions em 14 de setembro de 2026. Migre seus aplicativos para a versão 4.x para obter suporte completo.
- Não há suporte para gatilhos no Plano de Consumo. Este tipo de associação requer gatilhos controlados pelo runtime.
- Esse tipo de associação tem suporte apenas no Kubernetes, no Azure 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.
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.
Tipos de SDK
As extensões de associação do Azure Functions usam SDKs de serviço do Azure para se conectar aos serviços do Azure. Os tipos específicos de SDK usados por associações podem afetar como você trabalha com os dados em suas funções. Algumas associações dão suporte a tipos específicos do SDK que fornecem funcionalidades mais avançadas e melhor integração com o serviço, enquanto outras usam tipos mais genéricos, como cadeias de caracteres ou matrizes de bytes. Quando disponível, o uso de tipos específicos do SDK pode fornecer benefícios como melhor segurança de tipo, manipulação de dados mais fácil e acesso a recursos específicos do serviço.
Esta tabela indica extensões de associação que atualmente dão suporte a tipos de SDK:
| Extension | Tipos | Nível de suporte |
|---|---|---|
| Armazenamento de Blobs do Azure | BlobClientBlobContainerClientBlockBlobClientPageBlobClientAppendBlobClient |
Gatilho: GA Entrada: GA |
| Azure Cosmos DB | CosmosClientDatabaseContainer |
Entrada: GA |
| Grid de Eventos do Azure | CloudEventEventGridEvent |
Gatilho: 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 sobre tipos de SDK:
- Ao usar expressões de associação que dependem de dados de gatilho, não é possível usar os tipos de SDK do próprio gatilho.
- Para cenários de saída em que você pode usar um tipo de SDK, crie e trabalhe com clientes do SDK diretamente em vez de usar uma associação de saída.
- O gatilho do Azure Cosmos DB usa o feed de alterações do Azure Cosmos DB e expõe itens de feed de alterações como tipos serializáveis JSON. Como resultado, não há suporte para tipos de SDK para esse disparador.
Para obter mais informações, consulte os tipos de SDK no guia do desenvolvedor em C#.
| Extension | Tipos | Nível de suporte | Exemplos |
|---|---|---|---|
| Armazenamento de Blobs do Azure | BlobClientContainerClientStorageStreamDownloader |
Gatilho: GA Entrada: GA |
Início rápidoBlobClientContainerClientStorageStreamDownloader |
| Azure Cosmos DB | CosmosClientDatabaseProxyContainerProxy |
Entrada: visualização |
Início rápidoContainerProxyCosmosClientDatabaseProxy |
| Hubs de eventos do Azure | EventData |
Gatilho: visualização |
Início rápidoEventData |
| Barramento de Serviço do Azure | ServiceBusReceivedMessage |
Gatilho: visualização |
Início rápidoServiceBusReceivedMessage |
Considerações sobre tipos de SDK:
- Para cenários de saída em que você pode usar um tipo de SDK, crie e trabalhe com clientes do SDK diretamente em vez de usar uma associação de saída.
- O gatilho do Azure Cosmos DB usa o feed de alterações do Azure Cosmos DB e expõe itens de feed de alterações como tipos serializáveis JSON. Como resultado, não há suporte para tipos de SDK para esse disparador.
Os tipos de SDK só têm suporte ao usar o modelo de programação do Python v2. Para obter mais informações, consulte as associações de tipo do SDK no guia do desenvolvedor do Python.
| Extension | Tipos | Nível de suporte |
|---|---|---|
| Armazenamento de Blobs do Azure | BlobClientContainerClientReadableStream |
Preview |
| Barramento de Serviço do Azure | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Preview |
Os tipos de SDK só têm suporte ao usar o modelo de programação Node v4. Para obter mais informações, consulte os tipos de SDK no guia do desenvolvedor do Node.js.
| Extension | Tipos | Nível de suporte |
|---|---|---|
| Armazenamento de Blobs do Azure | BlobClientBlobContainerClient |
Preview |
Para obter mais informações, consulte os tipos de SDK no guia do desenvolvedor Java.
Importante
Atualmente, não há suporte para tipos de SDK para aplicativos do PowerShell.
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.