Compartilhar via


Conectar funções aos serviços do Azure usando associações

Quando você cria uma função, o código de gatilho específico da linguagem é adicionado ao seu projeto a partir de um conjunto de modelos de gatilho. Se você quiser conectar sua função a outros serviços usando associações de entrada ou saída, será necessário adicionar definições de associação específicas em sua função. Para saber mais sobre associações, confira Conceitos de gatilhos e de associaçõ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, o Visual Studio Code fornece ferramentas para adicionar associações 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 associaçã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 associaçã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 de função, dependendo do modelo:

É necessário adicionar anotações específicas de encadeamento à definição da função no código.

O exemplo a seguir mostra a definição de função depois de adicionar uma Associação de saída do Armazenamento de Filas a uma função de gatilho HTTP:

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

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

Veja a seguir a definição do objeto MultiResponse que inclui a associação de saída:

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

Ao aplicar esse exemplo ao seu projeto, talvez seja necessário alterar HttpRequest para HttpRequestData e IActionResult para HttpResponseData, dependendo se estiver usando a Integração com o ASP.NET Core ou não.

As mensagens são enviadas para a fila quando a função é concluída. A maneira como você define a associação de saída depende do seu modelo de processo. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 associação de saída depende da versão do modelo do Node.js. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associações a uma função.

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

Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 associação de saída depende da versão do modelo do Python. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 associação de saída depende da versão do modelo do Node.js. Para obter mais informações, incluindo links para o código de associação de exemplo ao qual você pode se referir, consulte Adicionar associaçõ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 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 Blobs Gatilho
Entrada
Saída
Link
Azure Cosmos DB (banco de dados distribuído da Azure) Gatilho
Entrada
Saída
Link
Azure Data Explorer (Explorador de Dados do Azure) Entrada
Saída
Link
Azure SQL Gatilho
Entrada
Saída
Link
Malha de Eventos Gatilho
Saída
Link
Hubs de Eventos Gatilho
Saída
IoT Hub 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
Sinal R Gatilho
Entrada
Saída
Armazenamento de tabela Entrada
Saída
Temporizador Gatilho Link
Twilio Saída Link
Serviço Exemplos Exemplos
Armazenamento de Blobs Gatilho
Entrada
Saída
Link
Azure Cosmos DB (banco de dados distribuído da Azure) Gatilho
Entrada
Saída
Link
Azure Data Explorer (Explorador de Dados do Azure) Entrada
Saída
Link
Azure SQL Gatilho
Entrada
Saída
Malha de Eventos Gatilho
Saída
Link
Hubs de Eventos Gatilho
Saída
IoT Hub 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
Sinal R Gatilho
Entrada
Saída
Armazenamento de tabela Entrada
Saída
Temporizador Gatilho Link
Twilio Saída Link
Serviço Exemplos Exemplos
Armazenamento de Blobs Gatilho
Entrada
Saída
Link
Azure Cosmos DB (banco de dados distribuído da Azure) Gatilho
Entrada
Saída
Link
Azure Data Explorer (Explorador de Dados do Azure) Entrada
Saída
Azure SQL Gatilho
Entrada
Saída
Link
Malha de Eventos Gatilho
Saída
Link
Hubs de Eventos Gatilho
Saída
IoT Hub 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
Sinal R Gatilho
Entrada
Saída
Armazenamento de tabela Entrada
Saída
Temporizador Gatilho Link
Twilio Saída Link
Serviço Exemplos Exemplos
Armazenamento de Blobs Gatilho
Entrada
Saída
Link
Azure Cosmos DB (banco de dados distribuído da Azure) Gatilho
Entrada
Saída
Link
Azure SQL Gatilho
Entrada
Saída
Malha de Eventos Gatilho
Saída
Link
Hubs de Eventos Gatilho
Saída
IoT Hub 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
Sinal R 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 Blobs Gatilho
Entrada
Saída
Link
Azure Cosmos DB (banco de dados distribuído da Azure) Gatilho
Entrada
Saída
Link
Azure Data Explorer (Explorador de Dados do Azure) Entrada
Saída
Azure SQL Gatilho
Entrada
Saída
Link
Malha de Eventos Gatilho
Saída
Link
Hubs de Eventos Gatilho
Saída
IoT Hub 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
Sinal R Gatilho
Entrada
Saída
Armazenamento de tabela Entrada
Saída
Temporizador Gatilho Link
Twilio Saída Link

Visual Studio Code

Quando você usa o Visual Studio Code para desenvolver sua função e sua função usa um arquivo function.json, a extensão do Azure Functions pode adicionar automaticamente uma associação a um arquivo function.json existente. Para saber mais, confira Adicionar associações de entrada e saída.

Portal do Azure

Ao desenvolver suas funções no portal do Azure, você adiciona associações de entrada e saída na guia Integrar para uma determinada função. As novas associações são adicionadas ao arquivo function.json ou aos atributos do método, dependendo do idioma. Os artigos a seguir mostram exemplos de como adicionar associações a uma função existente no portal:

Próximas etapas