Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo, aprenderá los conceptos de alto nivel relacionados con los desencadenadores y enlaces para las funciones.
Los desencadenadores provocan la ejecución de una función. Un desencadenador define cómo se invoca una función y una función debe tener exactamente un desencadenador. Los desencadenadores también pueden pasar datos a la función, como lo haría con las llamadas al método.
El enlace a una función es una manera de conectar las funciones mediante declaración a otros recursos. Los enlaces pasan datos a la función (un enlace de entrada) o permiten escribir datos de la función (un enlace de salida) mediante parámetros de enlace. El desencadenador de función es básicamente un tipo especial de enlace de entrada.
Puede mezclar y hacer coincidir enlaces para adaptarlos al escenario específico de la función. Los enlaces son opcionales y una función puede tener uno o varios enlaces de entrada o salida.
Los desencadenadores y enlaces evitan codificar el acceso a otros servicios. La función recibe los datos (por ejemplo, el contenido de un mensaje de cola) en parámetros de función. El usuario envía datos (por ejemplo, para crear un mensaje de la cola) mediante el valor devuelto de la función.
Tenga en cuenta los ejemplos siguientes de cómo puede implementar funciones:
| Escenario de ejemplo | Desencadenador | Enlace de entrada | Enlace de salida |
|---|---|---|---|
| Llega un nuevo mensaje de cola que ejecuta una función para escribir en otra cola. | Cola | Ninguno | Cola |
| Un trabajo programado lee el contenido de Azure Blob Storage y crea un nuevo documento en Azure Cosmos DB. | Temporizador | Almacenamiento de Blobs | Azure Cosmos DB |
| Azure Event Grid se usa para leer una imagen de Blob Storage y un documento de Azure Cosmos DB para enviar un correo electrónico. | Cuadrícula de Eventos | Blob Storage y Azure Cosmos DB | SendGrid |
Representa diferentes colas.
Estos ejemplos no están diseñados para ser exhaustivos, pero ilustran cómo puede usar desencadenadores y enlaces juntos. Para obtener un conjunto más completo de escenarios, consulte escenarios de Azure Functions.
Sugerencia
Azure Functions no requiere que use enlaces de entrada y salida para conectarse a Azure servicios. Siempre puede crear un cliente Azure SDK en el código y usarlo en su lugar para las transferencias de datos. Para obtener más información, consulte Conexión a servicios.
Definiciones de desencadenador y enlace
En el ejemplo siguiente se muestra una función activada por HTTP con una vinculación de salida que escribe un mensaje en una cola de Azure Storage.
En el caso de las funciones de la biblioteca de clases de C#, puede configurar desencadenadores y enlaces mediante la decoración de métodos y parámetros con atributos de C#. El atributo específico que aplique puede depender del modelo en tiempo de ejecución de C#:
- Modelo de trabajo aislado
- Modelo de proceso
El desencadenador HTTP () se define en el método para una función denominada que devuelve un objeto :
[Function("HttpExample")]
public MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequest req)
En este ejemplo se muestra la definición de objeto. La definición de objeto devuelve a la solicitud HTTP y escribe un mensaje en una cola de almacenamiento mediante una vinculación .
public class MultiResponse
{
[QueueOutput("outqueue", Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public IActionResult HttpResponse { get; set; }
}
Para obtener más información, consulte la guía de C# para modelos de trabajo aislados.
Las funciones de script de C# heredadas usan un archivo de definición. Para obtener más información, consulte la referencia del desarrollador de script C# (.csx) de Azure Functions.
Para Java funciones, puede configurar desencadenadores y enlaces anotando métodos y parámetros específicos. Este desencadenador HTTP () se define en el método para una función denominada . La función escribe en una cola de almacenamiento llamada que la anotación define en el parámetro :
@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 obtener más información, consulte la guía para desarrolladores Java.
La forma en que se definen desencadenadores y enlaces para funciones de Node.js depende de la versión específica de Node.js para Azure Functions:
- v4
- v3
En Node.js para Azure Functions versión 4, se configuran desencadenadores y enlaces mediante objetos exportados desde el módulo @azure/functions. Para más información, vea la Guía para desarrolladores de Node.js.
- v4
- v3
El método del objeto exportado define un desencadenador HTTP. El método en define un enlace de salida para este trigger.
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.' };
},
});
- v4
- v3
El método del objeto exportado define un desencadenador HTTP. El método en define un enlace de salida para este trigger.
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 archivo de ejemplo define la función:
{
"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 más información, consulte la Guía para desarrolladores de PowerShell.
La forma en que se define la función depende de la versión de Python para Azure Functions:
- v2
- v1
En Python para Azure Functions versión 2, se define la función directamente en el código mediante 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.')
Consideraciones de enlace
No todos los servicios admiten enlaces de entrada y salida. Consulte la extensión de enlace específica para obtener ejemplos de código específicos para los enlaces.
Los desencadenadores y enlaces se definen de forma diferente en función del lenguaje de desarrollo. Asegúrese de seleccionar el idioma en la parte superior de este artículo.
Los nombres de desencadenador y enlace están limitados a caracteres alfanuméricos y , el carácter de subrayado.
Tarea para agregar enlaces a una función
Puede conectar la función a otros servicios mediante enlaces de entrada o salida. Para incorporar un enlace, agregue sus definiciones específicas a la función. Para obtener información sobre cómo hacerlo, consulte Agregar enlaces a una función existente en Azure Functions.
Azure Functions admite varios enlaces, que deben configurarse correctamente. Por ejemplo, una función puede leer datos de una cola (enlace de entrada) y escribir datos en una base de datos (enlace de salida) simultáneamente.
Enlaces admitidos
En esta tabla se muestran los enlaces que se admiten en las versiones principales del entorno de ejecución de Azure Functions:
| Tipo | 4.x1 | 1.x2 | Desencadenador | Entrada | Salida |
|---|---|---|---|---|---|
| Blob Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Data Explorer | ✔ | ✔ | ✔ | ||
| Azure SQL | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Event Grid | ✔ | ✔ | ✔ | ✔ | |
| Event Hubs | ✔ | ✔ | ✔ | ✔ | |
| HTTP y webhooks | ✔ | ✔ | ✔ | ✔ | |
| IoT Hub | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Aplicaciones móviles | ✔ | ✔ | ✔ | ||
| Protocolo de contexto de modelo | ✔ | ✔ | |||
| Centros de notificaciones | ✔ | ✔ | |||
| Almacenamiento de Colas | ✔ | ✔ | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Service Bus | ✔ | ✔ | ✔ | ✔ | |
| Azure SignalR Service | ✔ | ✔ | ✔ | ✔ | |
| Almacenamiento de Tablas | ✔ | ✔ | ✔ | ✔ | |
| Temporizador | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
- Registre todos los enlaces excepto HTTP y temporizador. Consulte Registrar extensiones de enlace de Azure Functions. Este paso no es necesario cuando se usa la versión 1.x del entorno de ejecución de Functions.
- Support finaliza para la versión 1.x del entorno de ejecución de Azure Functions el 14 de septiembre de 2026. Migre las aplicaciones a la versión 4.x para obtener compatibilidad completa.
- Los desencadenadores no se admiten en el plan de consumo. Este tipo de enlace requiere desencadenadores controlados por tiempo de ejecución.
- Este tipo de enlace solo se admite en Kubernetes, Azure IoT Edge y otros modos autohospedados.
Para información sobre qué enlaces están en versión preliminar o aprobados para su uso en producción, consulte los lenguajes admitidos.
Solo se admiten versiones específicas de extensiones de enlace mientras se admite el SDK de servicio subyacente. Los cambios en la compatibilidad con la versión del SDK del servicio subyacente afectan a la compatibilidad con la extensión de consumo.
Tipos de SDK
Las extensiones de enlace de Azure Functions usan los SDK de servicios de Azure para conectarse a los servicios de Azure. Los tipos de SDK específicos que usan los enlaces pueden afectar a su forma de trabajar con los datos en sus funciones. Algunos enlaces admiten tipos específicos del SDK que proporcionan una funcionalidad más completa y una mejor integración con el servicio, mientras que otros usan tipos más genéricos, como cadenas o matrices de bytes. Cuando está disponible, el uso de tipos específicos del SDK puede proporcionar ventajas como una mejor seguridad de tipos, una manipulación de datos más sencilla y el acceso a características específicas del servicio.
Esta tabla indica las extensiones de enlace que admiten actualmente tipos de SDK:
| Extension | Tipos | Nivel de soporte |
|---|---|---|
| Azure Blob Storage | BlobClientBlobContainerClientBlockBlobClientPageBlobClientAppendBlobClient |
Desencadenador: GA Entrada: disponibilidad general |
| Azure Cosmos DB | CosmosClientDatabaseContainer |
Entrada: disponibilidad general |
| Azure Event Grid | CloudEventEventGridEvent |
Desencadenador: GA |
| Azure Event Hubs | EventDataEventHubProducerClient |
Desencadenador: GA |
| Azure Queue Storage | QueueClientQueueMessage |
Desencadenador: GA |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Desencadenador: GA |
| Azure Table Storage | TableClientTableEntity |
Entrada: disponibilidad general |
Consideraciones para los tipos de SDK:
- Al usar expresiones de enlace que se basan en datos de desencadenador, no se pueden usar tipos de SDK para el propio desencadenador.
- En escenarios de salida en los que puede usar un tipo de SDK, cree y trabaje con clientes del SDK directamente en lugar de usar un enlace de salida.
- El desencadenador de Azure Cosmos DB usa la fuente de cambios de Azure Cosmos DB y expone elementos de la fuente de cambios como tipos serializables JSON. Como resultado, los tipos de SDK no se admiten para este desencadenador.
Para obtener más información, consulte Tipos de SDK en la guía para desarrolladores de C#.
| Extension | Tipos | Nivel de soporte | Ejemplos |
|---|---|---|---|
| Azure Blob Storage | BlobClientContainerClientStorageStreamDownloader |
Desencadenador: GA Entrada: disponibilidad general |
QuickstartBlobClientContainerClientStorageStreamDownloader |
| Azure Cosmos DB | CosmosClientDatabaseProxyContainerProxy |
Entrada: vista previa |
QuickstartContainerProxyCosmosClientDatabaseProxy |
| Azure Event Hubs | EventData |
Desencadenador: versión preliminar |
QuickstartEventData |
| Azure Service Bus | ServiceBusReceivedMessage |
Desencadenador: versión preliminar |
QuickstartServiceBusReceivedMessage |
Consideraciones para los tipos de SDK:
- En escenarios de salida en los que puede usar un tipo de SDK, cree y trabaje con clientes del SDK directamente en lugar de usar un enlace de salida.
- El desencadenador de Azure Cosmos DB usa la fuente de cambios de Azure Cosmos DB y expone elementos de la fuente de cambios como tipos serializables JSON. Como resultado, los tipos de SDK no se admiten para este desencadenador.
Los tipos de SDK solo se admiten cuando se usa el modelo de programación de Python v2. Para obtener más información, consulte SDK type bindings en la guía para desarrolladores de Python.
| Extension | Tipos | Nivel de soporte |
|---|---|---|
| Azure Blob Storage | BlobClientContainerClientReadableStream |
Preview |
| Azure Service Bus | ServiceBusClientServiceBusReceiverServiceBusSenderServiceBusMessage |
Preview |
Los tipos de SDK solo se admiten cuando se usa el modelo de programación de Node v4. Para obtener más información, consulte Tipos de SDK en la guía para desarrolladores de Node.js.
| Extension | Tipos | Nivel de soporte |
|---|---|---|
| Azure Blob Storage | BlobClientBlobContainerClient |
Preview |
Para obtener más información, consulte SDK types en la guía para desarrolladores de Java.
Importante
Los tipos de SDK no se admiten actualmente para las aplicaciones de PowerShell.
Ejemplos de código para enlaces
Use la tabla siguiente para buscar más ejemplos de tipos de enlaces específicos que muestren cómo trabajar con enlaces en las funciones. 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.
- Proceso aislado
- En curso
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| Almacenamiento de Blobs | Desencadenador Entrada Salida |
Link |
| Azure Cosmos DB | Desencadenador Entrada Salida |
Link |
| Azure Data Explorer | Entrada Salida |
Link |
| Azure SQL | Desencadenador Entrada Salida |
Vínculo |
| Cuadrícula de Eventos | Desencadenador Salida |
Link |
| Event Hubs | Desencadenador Salida |
|
| IoT Hub | Desencadenador Salida |
|
| HTTP | Desencadenador | Link |
| Queue Storage | Desencadenador Salida |
Link |
| RabbitMQ | Desencadenador Salida |
|
| SendGrid | Salida | |
| Bus de Servicio | Desencadenador Salida |
Link |
| Azure SignalR Service | Desencadenador Entrada Salida |
|
| Table Storage | Entrada Salida |
|
| Temporizador | Desencadenador | Link |
| Twilio | Salida | Link |
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| Almacenamiento de Blobs | Desencadenador Entrada Salida |
Link |
| Azure Cosmos DB | Desencadenador Entrada Salida |
Link |
| Azure Data Explorer | Entrada Salida |
Link |
| Azure SQL | Desencadenador Entrada Salida |
|
| Cuadrícula de Eventos | Desencadenador Salida |
Link |
| Event Hubs | Desencadenador Salida |
|
| IoT Hub | Desencadenador Salida |
|
| HTTP | Desencadenador | Link |
| Queue Storage | Desencadenador Salida |
Link |
| RabbitMQ | Desencadenador Salida |
|
| SendGrid | Salida | |
| Bus de Servicio | Desencadenador Salida |
Link |
| Azure SignalR Service | Desencadenador Entrada Salida |
|
| Table Storage | Entrada Salida |
|
| Temporizador | Desencadenador | Link |
| Twilio | Salida |
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| Almacenamiento de Blobs | Desencadenador Entrada Salida |
Link |
| Azure Cosmos DB | Desencadenador Entrada Salida |
Link |
| Azure Data Explorer | Entrada Salida |
|
| Azure SQL | Desencadenador Entrada Salida |
Link |
| Cuadrícula de Eventos | Desencadenador Salida |
|
| Event Hubs | Desencadenador Salida |
|
| IoT Hub | Desencadenador Salida |
|
| HTTP | Desencadenador | Link |
| Queue Storage | Desencadenador Salida |
Link |
| RabbitMQ | Desencadenador Salida |
|
| SendGrid | Salida | |
| Bus de Servicio | Desencadenador Salida |
Link |
| Azure SignalR Service | Desencadenador Entrada Salida |
|
| Table Storage | Entrada Salida |
|
| Temporizador | Desencadenador | |
| Twilio | Salida |
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| Almacenamiento de Blobs | Desencadenador Entrada Salida |
|
| Azure Cosmos DB | Desencadenador Entrada Salida |
|
| Azure SQL | Desencadenador Entrada Salida |
|
| Cuadrícula de Eventos | Desencadenador Salida |
|
| Event Hubs | Desencadenador Salida |
|
| IoT Hub | Desencadenador Salida |
|
| HTTP | Desencadenador | Link |
| Queue Storage | Desencadenador Salida |
|
| RabbitMQ | Desencadenador Salida |
|
| SendGrid | Salida | |
| Bus de Servicio | Desencadenador Salida |
|
| Azure SignalR Service | Desencadenador Entrada Salida |
|
| Table Storage | Entrada Salida |
|
| Temporizador | Desencadenador | |
| Twilio | Salida |
El código de vinculación para Python depende de la versión del modelo de Python.
- v2
- v1
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| Almacenamiento de Blobs | Desencadenador Entrada Salida |
Link |
| Azure Cosmos DB | Desencadenador Entrada Salida |
Link |
| Azure Data Explorer | Entrada Salida |
|
| Azure SQL | Desencadenador Entrada Salida |
Link |
| Cuadrícula de Eventos | Desencadenador Salida |
|
| Event Hubs | Desencadenador Salida |
|
| IoT Hub | Desencadenador Salida |
|
| HTTP | Desencadenador | Link |
| Queue Storage | Desencadenador Salida |
|
| RabbitMQ | Desencadenador Salida |
|
| SendGrid | Salida | |
| Bus de Servicio | Desencadenador Salida |
Link |
| Azure SignalR Service | Desencadenador Entrada Salida |
|
| Table Storage | Entrada Salida |
|
| Temporizador | Desencadenador | |
| Twilio | Salida |
Enlaces personalizados
Puede crear enlaces de entrada y salida personalizados. Las vinculaciones deben crearse en .NET, pero se pueden utilizar desde cualquier lenguaje admitido. Para obtener más información sobre cómo crear enlaces personalizados, vea Creación de enlaces de entrada y salida personalizados.
Contenido relacionado
- Patrones y expresiones de enlace
- Registrar extensiones de enlace de Azure Functions
- Ejecución manual de una función no desencadenada por HTTP
- Control de errores de enlace