Compartir a través de


Conexión de funciones a servicios de Azure mediante enlaces

Al crear una función, se agrega código de desencadenador específico del lenguaje en el proyecto a partir de un conjunto de plantillas de desencadenador. Si desea conectar la función a otros servicios mediante enlaces de entrada o salida, debe agregar definiciones de enlace específicas en la función. Para más información acerca de los enlaces, consulte Conceptos básicos sobre los enlaces y desencadenadores de Azure Functions.

Desarrollo local

Al desarrollar funciones localmente, debe actualizar el código de función para agregar enlaces. Para los lenguajes que usan function.json, Visual Studio Code proporciona herramientas para agregar enlaces a una función.

Agregar enlaces manualmente en función de ejemplos

Al agregar un enlace a una función existente, debe agregar atributos específicos del enlace a la definición de función en el código.

Al agregar un enlace a una función existente, debe agregar anotaciones específicas del enlace a la definición de función en el código.

Al agregar un enlace a una función existente, debe actualizar el código de función y agregar una definición al archivo de configuración de function.json.

Al agregar un enlace a una función existente, necesita actualizar la definición de función, en función del modelo:

Deberá agregar anotaciones específicas del enlace a la definición de la función en el código.

En el ejemplo siguiente se muestra la definición de función después de agregar un Enlace de salida de Queue Storage a una función desencadenada por HTTP:

Dado que una función activada por HTTP también devuelve una respuesta HTTP, la función devuelve un objeto MultiResponse, que representa tanto la salida HTTP como la de la cola.

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

Este ejemplo muestra la definición del objeto MultiResponse, que incluye el enlace de salida:

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

Al aplicar ese ejemplo a su propio proyecto, es posible que tenga que cambiar HttpRequest por HttpRequestData y IActionResult por HttpResponseData, dependiendo de si usa integración ASP.NET Core o no.

Los mensajes se envían a la cola cuando se completa la función. La forma de definir el enlace de salida depende de su modelo de proceso. Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.

@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 obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.

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' };
    }
  },
});

La forma de definir el enlace de salida depende de la versión del modelo de Node.js. Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.

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

Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.

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

La forma de definir el enlace de salida depende de la versión del modelo de Python. Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.

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,
});

La forma de definir el enlace de salida depende de la versión del modelo de Node.js. Para obtener más información, incluidos los vínculos al código de enlace de ejemplo al que puede hacer referencia, consulte Agregar enlaces a una función.

Use la tabla siguiente para buscar ejemplos de tipos de enlace específicos que puede usar para guiarle en la actualización de una función existente. En primer lugar, elija la pestaña de lenguaje que corresponde al proyecto.

El código de enlace para C# depende del modelo de proceso específico.

Servicio Ejemplos Muestras
Blob Storage Desencadenador
Entrada
Salida
Vínculo
Azure Cosmos DB (la base de datos de Azure Cosmos) Desencadenador
Entrada
Salida
Vínculo
Explorador de Datos de Azure Entrada
Salida
Vínculo
Azure SQL Desencadenador
Entrada
Salida
Vínculo
Cuadrícula de Eventos Desencadenador
Salida
Vínculo
Event Hubs Desencadenador
Salida
IoT Hub Desencadenador
Salida
HTTP Desencadenador Vínculo
Queue Storage Desencadenador
Salida
Vínculo
RabbitMQ Desencadenador
Salida
SendGrid Salida
Bus de Servicio Desencadenador
Salida
Vínculo
SignalR Desencadenador
Entrada
Salida
Almacenamiento de tablas Entrada
Salida
Temporizador Desencadenador Vínculo
Twilio Salida Vínculo
Servicio Ejemplos Muestras
Blob Storage Desencadenador
Entrada
Salida
Vínculo
Azure Cosmos DB (la base de datos de Azure Cosmos) Desencadenador
Entrada
Salida
Vínculo
Explorador de Datos de Azure Entrada
Salida
Vínculo
Azure SQL Desencadenador
Entrada
Salida
Cuadrícula de Eventos Desencadenador
Salida
Vínculo
Event Hubs Desencadenador
Salida
IoT Hub Desencadenador
Salida
HTTP Desencadenador Vínculo
Queue Storage Desencadenador
Salida
Vínculo
RabbitMQ Desencadenador
Salida
SendGrid Salida
Bus de Servicio Desencadenador
Salida
Vínculo
SignalR Desencadenador
Entrada
Salida
Almacenamiento de tablas Entrada
Salida
Temporizador Desencadenador Vínculo
Twilio Salida Vínculo
Servicio Ejemplos Muestras
Blob Storage Desencadenador
Entrada
Salida
Vínculo
Azure Cosmos DB (la base de datos de Azure Cosmos) Desencadenador
Entrada
Salida
Vínculo
Explorador de Datos de Azure Entrada
Salida
Azure SQL Desencadenador
Entrada
Salida
Vínculo
Cuadrícula de Eventos Desencadenador
Salida
Vínculo
Event Hubs Desencadenador
Salida
IoT Hub Desencadenador
Salida
HTTP Desencadenador Vínculo
Queue Storage Desencadenador
Salida
Vínculo
RabbitMQ Desencadenador
Salida
SendGrid Salida
Bus de Servicio Desencadenador
Salida
Vínculo
SignalR Desencadenador
Entrada
Salida
Almacenamiento de tablas Entrada
Salida
Temporizador Desencadenador Vínculo
Twilio Salida Vínculo
Servicio Ejemplos Muestras
Blob Storage Desencadenador
Entrada
Salida
Vínculo
Azure Cosmos DB (la base de datos de Azure Cosmos) Desencadenador
Entrada
Salida
Vínculo
Azure SQL Desencadenador
Entrada
Salida
Cuadrícula de Eventos Desencadenador
Salida
Vínculo
Event Hubs Desencadenador
Salida
IoT Hub Desencadenador
Salida
HTTP Desencadenador Vínculo
Queue Storage Desencadenador
Salida
Vínculo
RabbitMQ Desencadenador
Salida
SendGrid Salida
Bus de Servicio Desencadenador
Salida
Vínculo
SignalR Desencadenador
Entrada
Salida
Almacenamiento de tablas Entrada
Salida
Temporizador Desencadenador Vínculo
Twilio Salida Vínculo

El código de enlace para Python dependerá de la versión del modelo de Python.

Servicio Ejemplos Muestras
Blob Storage Desencadenador
Entrada
Salida
Vínculo
Azure Cosmos DB (la base de datos de Azure Cosmos) Desencadenador
Entrada
Salida
Vínculo
Explorador de Datos de Azure Entrada
Salida
Azure SQL Desencadenador
Entrada
Salida
Vínculo
Cuadrícula de Eventos Desencadenador
Salida
Vínculo
Event Hubs Desencadenador
Salida
IoT Hub Desencadenador
Salida
HTTP Desencadenador Vínculo
Queue Storage Desencadenador
Salida
Vínculo
RabbitMQ Desencadenador
Salida
SendGrid Salida
Bus de Servicio Desencadenador
Salida
Vínculo
SignalR Desencadenador
Entrada
Salida
Almacenamiento de tablas Entrada
Salida
Temporizador Desencadenador Vínculo
Twilio Salida Vínculo

Código de Visual Studio

Cuando se usa Visual Studio Code para desarrollar la función y la función usa un archivo function.json, la extensión de Azure Functions puede agregar automáticamente un enlace a un archivo function.json existente. Para más información, consulte Incorporación de enlaces de entrada y salida.

Portal de Azure

Al desarrollar las funciones en Azure Portal, se agregan enlaces de entrada y salida en la pestaña Integrar de una función determinada. Los nuevos enlaces se agregan al archivo function.json o a los atributos del método, en función del idioma. En los artículos siguientes se muestran ejemplos de cómo agregar enlaces a una función existente en el portal:

Pasos siguientes