Partilhar via


Ligue funções a serviços Azure usando bindings

Quando crias uma função, o código de trigger específico da linguagem é adicionado ao teu projeto a partir de um conjunto de modelos de trigger. Se você quiser conectar sua função a outros serviços usando ligações de entrada ou saída, você precisa adicionar definições de vinculação específicas em sua função. Para saber mais sobre ligações, veja disparadores e conceitos de ligações do Azure Functions.

Desenvolvimento local

Ao desenvolver funções localmente, você precisa atualizar o código da função para adicionar associações. Para linguagens que usam function.json, Visual Studio Code fornece ferramentas para adicionar bindings a uma função.

Adicionar associações manualmente com base em exemplos

Ao adicionar uma associação a uma função existente, você precisa adicionar atributos específicos de vinculação à definição de função no código.

Ao adicionar uma associação a uma função existente, você precisa adicionar anotações específicas de vinculação à definição de função no código.

Ao adicionar uma associação a uma função existente, você precisa atualizar o código da função e adicionar uma definição ao arquivo de configuração function.json.

Ao adicionar uma associação a uma função existente, você precisa atualizar a definição da função, dependendo do seu modelo:

Você precisa adicionar anotações específicas de vinculação à definição de função no código.

O exemplo seguinte mostra a definição da função após adicionar uma vinculação de saída para Queue Storage a uma função acionada por HTTP:

Como uma função acionada por HTTP também retorna uma resposta HTTP, a função retorna um MultiResponse objeto, que representa a saída HTTP e a saída da fila.

[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
{

Este exemplo é a definição do objeto MultiResponse que inclui a ligação de saída:

public class MultiResponse
{
    [QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
    public string[] Messages { get; set; }
    public IActionResult HttpResponse { get; set; }
}

Este exemplo utiliza integração ASP.NET Core. Se não estiveres a usar ASP.NET Core integração, tens de mudar HttpRequest para HttpRequestData e IActionResult para HttpResponseData.

As mensagens são enviadas para a fila quando a função é concluída. A maneira como você define a ligação de saída depende do seu modelo de processo. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

@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) {

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

const { app, output } = require('@azure/functions');

const sendToQueue = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  extraOutputs: [sendToQueue],
  handler: async (request, context) => {
    try {
      context.log(`Http function processed request for url "${request.url}"`);

      const name = request.query.get('name') || (await request.text());
      context.log(`Name: ${name}`);

      if (name) {
        const msg = `Name passed to the function ${name}`;
        context.extraOutputs.set(sendToQueue, [msg]);
        return { body: msg };
      } else {
        context.log('Missing required data');
        return { status: 404, body: 'Missing required data' };
      }
    } catch (error) {
      context.log(`Error: ${error}`);
      return { status: 500, body: 'Internal Server Error' };
    }
  },
});

A maneira como você define a ligação de saída depende da versão do seu modelo de Node.js. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

$outputMsg = $name
Push-OutputBinding -name msg -Value $outputMsg

Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

@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.')

A maneira como você define a ligação de saída depende da versão do seu modelo Python. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

import {
  app,
  output,
  HttpRequest,
  HttpResponseInit,
  InvocationContext,
  StorageQueueOutput,
} from '@azure/functions';

const sendToQueue: StorageQueueOutput = output.storageQueue({
  queueName: 'outqueue',
  connection: 'AzureWebJobsStorage',
});

export async function HttpExample(
  request: HttpRequest,
  context: InvocationContext,
): Promise<HttpResponseInit> {
  try {
    context.log(`Http function processed request for url "${request.url}"`);

    const name = request.query.get('name') || (await request.text());
    context.log(`Name: ${name}`);

    if (name) {
      const msg = `Name passed to the function ${name}`;
      context.extraOutputs.set(sendToQueue, [msg]);
      return { body: msg };
    } else {
      context.log('Missing required data');
      return { status: 404, body: 'Missing required data' };
    }
  } catch (error) {
    context.log(`Error: ${error}`);
    return { status: 500, body: 'Internal Server Error' };
  }
}

app.http('HttpExample', {
  methods: ['GET', 'POST'],
  authLevel: 'anonymous',
  handler: HttpExample,
});

A maneira como você define a ligação de saída depende da versão do seu modelo de Node.js. Para obter mais informações, incluindo links para exemplos de código de vinculação aos quais você pode se referir, consulte Adicionar ligações a uma função.

Use a tabela a seguir para encontrar exemplos de tipos de associação específicos que você pode usar para orientá-lo na atualização de uma função existente. Primeiro, escolha o separador de língua que corresponde ao seu projecto.

O código de vinculação para C# depende do modelo de processo específico.

Serviço Exemplos Exemplos
Armazenamento Blob Acionador
Input
Output
Link
Azure Cosmos DB Desencadeador
Entrada
Realização
Link
Azure Data Explorer Input
Output
Link
Azure SQL Acionador
Input
Output
Link
Event Grid Desencadeador
Realização
Link
Hubs de Eventos Desencadeador
Realização
IoT Hub Desencadeador
Realização
HTTP Desencadeador Link
Armazenamento em Fila Acionador
Output
Link
RabbitMQ Desencadeador
Realização
SendGrid Realização
Service Bus Desencadeador
Realização
Link
Azure SignalR Service Desencadeador
Entrada
Realização
Armazenamento de Tabelas Input
Output
Temporizador Desencadeador Link
Twilio Realização Link
Serviço Exemplos Exemplos
Armazenamento Blob Acionador
Input
Output
Link
Azure Cosmos DB Desencadeador
Entrada
Realização
Link
Azure Data Explorer Input
Output
Link
Azure SQL Acionador
Input
Output
Event Grid Desencadeador
Realização
Link
Hubs de Eventos Desencadeador
Realização
IoT Hub Desencadeador
Realização
HTTP Desencadeador Link
Armazenamento em Fila Acionador
Output
Link
RabbitMQ Desencadeador
Realização
SendGrid Realização
Service Bus Desencadeador
Realização
Link
Azure SignalR Service Desencadeador
Entrada
Realização
Armazenamento de Tabelas Input
Output
Temporizador Desencadeador Link
Twilio Realização
Serviço Exemplos Exemplos
Armazenamento de Blobs Acionador
Input
Output
Link
Azure Cosmos DB Desencadeador
Entrada
Realização
Link
Azure Data Explorer Input
Output
Azure SQL Trigger
Input
Output
Link
Event Grid Desencadeador
Realização
Hubs de Eventos Desencadeador
Realização
IoT Hub Desencadeador
Realização
HTTP Desencadeador Link
Armazenamento em Fila Acionador
Output
Link
RabbitMQ Desencadeador
Realização
SendGrid Realização
Service Bus Desencadeador
Realização
Link
Azure SignalR Service Desencadeador
Entrada
Realização
Armazenamento de Tabelas Input
Output
Temporizador Desencadeador
Twilio Realização
Serviço Exemplos Exemplos
Armazenamento de Blobs Acionador
Input
Output
Azure Cosmos DB Desencadeador
Entrada
Realização
Azure SQL Acionador
Input
Output
Event Grid Desencadeador
Realização
Hubs de Eventos Desencadeador
Realização
IoT Hub Desencadeador
Realização
HTTP Desencadeador Link
Armazenamento em Fila Trigger
Output
RabbitMQ Desencadeador
Realização
SendGrid Realização
Service Bus Desencadeador
Realização
Azure SignalR Service Desencadeador
Entrada
Realização
Armazenamento de Tabelas Input
Output
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 Blob Acionador
Input
Output
Link
Azure Cosmos DB Desencadeador
Entrada
Realização
Link
Azure Data Explorer Input
Output
Azure SQL Acionador
Input
Output
Link
Event Grid Desencadeador
Realização
Hubs de Eventos Desencadeador
Realização
IoT Hub Desencadeador
Realização
HTTP Desencadeador Link
Armazenamento em Fila Acionador
Output
RabbitMQ Desencadeador
Realização
SendGrid Realização
Service Bus Desencadeador
Realização
Link
Azure SignalR Service Desencadeador
Entrada
Realização
Armazenamento de Tabelas Input
Output
Temporizador Desencadeador
Twilio Realização

Visual Studio Code

Quando usas Visual Studio Código para desenvolver a tua função e a tua função usa um ficheiro function.json, a extensão Azure Functions pode adicionar automaticamente uma ligação a um ficheiro de function.json existente. Para saber mais, consulte Adicionar ligações de entrada e saída.

Azure portal

Quando desenvolves as tuas funções no Azure portal, adicionas ligações de entrada e saída no separador Integrar para uma dada função. As novas associações são adicionadas ao arquivo function.json ou aos atributos do método, dependendo do seu idioma. Os artigos a seguir mostram exemplos de como adicionar associações a uma função existente no portal:

Próximos passos