Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Neste artigo, você aprenderá os conceitos de alto nível em torno de funções, gatilhos e associaçõ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 forma 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 ligação. Seu gatilho de função é essencialmente um tipo especial de ligação de entrada.
Você pode misturar e combinar diferentes vínculos para se adequar ao cenário específico da sua função. Os enlaces são opcionais e uma função pode ter um ou mais enlaces de entrada e/ou de 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 diferentes 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 Blob e cria um novo documento do Azure Cosmos DB. | Temporizador | Armazenamento de Blobs | Base de Dados Azure Cosmos |
A Grade de Eventos é usada para ler uma imagem do Armazenamento de Blobs e um documento do Azure Cosmos DB para enviar um email. | Grelha de Eventos (Event Grid) | Armazenamento de Blobs e Azure Cosmos DB | SendGrid |
* Representa filas diferentes
Esses exemplos não devem ser exaustivos, mas são fornecidos para ilustrar 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 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
Uma função tem um único gatilho e uma ou mais ligações. O tipo de ligação é entrada ou saída. 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 de ligações específicas.
Gatilhos e ligações são definidos de forma diferente dependendo da linguagem de desenvolvimento. Certifique-se de que seleciona o seu idioma na parte superior do artigo.
Os nomes de gatilho e ligação são limitados a caracteres alfanuméricos e _
, o sublinhado.
Este exemplo demonstra uma função acionada por HTTP com uma associação de saída que regista uma mensagem numa fila do Armazenamento do Azure.
Para funções de biblioteca de classes C#, gatilhos e associações são configurados decorando métodos e parâmetros com atributos C#, onde o atributo específico aplicado pode depender do modelo de tempo de execução 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 do objeto MultiResponse
que retorna um HttpResponse
para a solicitação HTTP e também escreve 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 de modelo de trabalhador 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, triggers e bindings são configurados anotando métodos e parâmetros específicos. Esse gatilho HTTP (@HttpTrigger
) é definido no método run
para uma função chamada HttpTriggerQueueOutput
, que grava numa fila de armazenamento definida pela anotação no parâmetro @QueueOutput
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 obter mais informações, consulte o Guia do desenvolvedor Java.
A maneira como os gatilhos e as ligações são definidos para funções Node.js depende da versão específica do Node.js para Funções:
No Node.js para o Functions versão 4, você configura gatilhos e ligações usando objetos exportados do @azure/functions
módulo. Para obter mais informações, consulte o Node.js guia do desenvolvedor.
Este exemplo é uma função acionada por HTTP que cria um item de fila para cada solicitação HTTP recebida.
O http
método no objeto exportado app
define um disparador HTTP, e o storageQueue
método no output
define uma ligação de saída para esse disparador.
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 disparador HTTP, e o storageQueue
método no output
define uma ligação de saída para esse disparador.
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 Functions:
No Python for 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 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 | 1,x1 | 2.x e versões superiores2 | Acionador | Entrada | Resultado |
---|---|---|---|---|---|
Blob Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
Azure Data Explorer | ✔ | ✔ | ✔ | ||
Azure SQL | ✔ | ✔ | ✔ | ✔ | |
Dapr4 | ✔ | ✔ | ✔ | ✔ | |
Grelha de Eventos | ✔ | ✔ | ✔ | ✔ | |
Hubs de Eventos | ✔ | ✔ | ✔ | ✔ | |
HTTP & webhooks | ✔ | ✔ | ✔ | ✔ | |
IoT Hub | ✔ | ✔ | ✔ | ||
Kafka3 | ✔ | ✔ | ✔ | ||
Aplicações Móveis | ✔ | ✔ | ✔ | ||
Hubs de Notificação | ✔ | ✔ | |||
Armazenamento em fila | ✔ | ✔ | ✔ | ✔ | |
Redis | ✔ | ✔ | ✔ | ✔ | |
CoelhoMQ3 | ✔ | ✔ | ✔ | ||
SendGrid | ✔ | ✔ | ✔ | ||
Barramento de Serviço | ✔ | ✔ | ✔ | ✔ | |
SignalR | ✔ | ✔ | ✔ | ✔ | |
Armazenamento de tabelas | ✔ | ✔ | ✔ | ✔ | |
Temporizador | ✔ | ✔ | ✔ | ||
Twilio | ✔ | ✔ | ✔ |
Observações:
- O suporte terminará para a versão 1.x do tempo de execução do Azure Functions em 14 de setembro de 2026. É altamente recomendável que você migre seus aplicativos para a versão 4.x para obter suporte completo.
- A partir do tempo de execução da versão 2.x, todas as associações, exceto HTTP e Timer, devem ser registradas. Consulte extensões de vinculação de registro.
- Os gatilhos não são suportados no plano de Consumo. Requer gatilhos controlados por tempo de execução.
- Suportado apenas em Kubernetes, 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 de extensão de vinculação específicas só são suportadas 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 consumidora.
Exemplos de código de bindings
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 |
Base de Dados Azure Cosmos |
Desencadeador Entrada Realização |
Ligação |
Explorador de Dados Azure |
Entrada Realização |
Ligação |
Azure SQL |
Desencadeador Entrada Realização |
Ligação |
Grelha de Eventos (Event Grid) |
Desencadeador Realização |
Ligação |
Hubs de Eventos |
Desencadeador Realização |
|
IoT Hub |
Desencadeador Realização |
|
HTTP | Desencadeador | Ligação |
Armazenamento em Fila |
Desencadeador Realização |
Ligação |
CoelhoMQ |
Desencadeador Realização |
|
SendGrid | Realização | |
Bus de Serviço |
Desencadeador Realização |
Ligação |
SignalR |
Desencadeador Entrada Realização |
|
Armazenamento de mesas |
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 |
Base de Dados Azure Cosmos |
Desencadeador Entrada Realização |
Ligação |
Explorador de Dados Azure |
Entrada Realização |
Ligação |
Azure SQL |
Desencadeador Entrada Realização |
|
Grelha de Eventos (Event Grid) |
Desencadeador Realização |
Ligação |
Hubs de Eventos |
Desencadeador Realização |
|
IoT Hub |
Desencadeador Realização |
|
HTTP | Desencadeador | Ligação |
Armazenamento em Fila |
Desencadeador Realização |
Ligação |
CoelhoMQ |
Desencadeador Realização |
|
SendGrid | Realização | |
Bus de Serviço |
Desencadeador Realização |
Ligação |
SignalR |
Desencadeador Entrada Realização |
|
Armazenamento de mesas |
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 |
Base de Dados Azure Cosmos |
Desencadeador Entrada Realização |
Ligação |
Explorador de Dados Azure |
Entrada Realização |
|
Azure SQL |
Desencadeador Entrada Realização |
Ligação |
Grelha de Eventos (Event Grid) |
Desencadeador Realização |
Ligação |
Hubs de Eventos |
Desencadeador Realização |
|
IoT Hub |
Desencadeador Realização |
|
HTTP | Desencadeador | Ligação |
Armazenamento em Fila |
Desencadeador Realização |
Ligação |
CoelhoMQ |
Desencadeador Realização |
|
SendGrid | Realização | |
Bus de Serviço |
Desencadeador Realização |
Ligação |
SignalR |
Desencadeador Entrada Realização |
|
Armazenamento de mesas |
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 |
Base de Dados Azure Cosmos |
Desencadeador Entrada Realização |
Ligação |
Azure SQL |
Desencadeador Entrada Realização |
|
Grelha de Eventos (Event Grid) |
Desencadeador Realização |
Ligação |
Hubs de Eventos |
Desencadeador Realização |
|
IoT Hub |
Desencadeador Realização |
|
HTTP | Desencadeador | Ligação |
Armazenamento em Fila |
Desencadeador Realização |
Ligação |
CoelhoMQ |
Desencadeador Realização |
|
SendGrid | Realização | |
Bus de Serviço |
Desencadeador Realização |
Ligação |
SignalR |
Desencadeador Entrada Realização |
|
Armazenamento de mesas |
Entrada Realização |
|
Temporizador | Desencadeador | Ligação |
Twilio | Realização | Ligaçã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 |
Base de Dados Azure Cosmos |
Desencadeador Entrada Realização |
Ligação |
Explorador de Dados Azure |
Entrada Realização |
|
Azure SQL |
Desencadeador Entrada Realização |
Ligação |
Grelha de Eventos (Event Grid) |
Desencadeador Realização |
Ligação |
Hubs de Eventos |
Desencadeador Realização |
|
IoT Hub |
Desencadeador Realização |
|
HTTP | Desencadeador | Ligação |
Armazenamento em Fila |
Desencadeador Realização |
Ligação |
CoelhoMQ |
Desencadeador Realização |
|
SendGrid | Realização | |
Bus de Serviço |
Desencadeador Realização |
Ligação |
SignalR |
Desencadeador Entrada Realização |
|
Armazenamento de mesas |
Entrada Realização |
|
Temporizador | Desencadeador | Ligação |
Twilio | Realização | Ligaçã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.