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 de Azure Cosmos DB. | Temporizador | Blob Storage | Azure Cosmos DB (la base de datos de Azure Cosmos) |
| 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 los servicios de Azure. Siempre puede crear un cliente del SDK de Azure 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 desencadenada por HTTP con un enlace 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#:
El desencadenador HTTP (HttpTrigger) se define en el método Run para una función denominada HttpExample que devuelve un objeto MultiResponse:
[Function("HttpExample")]
public static MultiResponse Run([HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req,
FunctionContext executionContext)
{
En este ejemplo se muestra la definición de MultiResponse objeto. La definición de objeto devuelve HttpResponse a la solicitud HTTP y escribe un mensaje en una cola de almacenamiento mediante una vinculación QueueOutput.
public class MultiResponse
{
[QueueOutput("outqueue",Connection = "AzureWebJobsStorage")]
public string[] Messages { get; set; }
public HttpResponseData 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 function.json definición. Para más información, consulte la Referencia para desarrolladores de scripts de C# de Azure Functions (.csx).
Para las funciones de Java, puede configurar desencadenadores y enlaces mediante la anotación de métodos y parámetros específicos. Este desencadenador HTTP (@HttpTrigger) se define en el run método para una función denominada HttpTriggerQueueOutput. La función escribe en una cola de almacenamiento que la anotación @QueueOutput define en el parámetro 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 más información, consulte la Guía para desarrolladores de 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:
En Node.js para la versión 4 de Azure Functions, puede configurar desencadenadores y enlaces mediante objetos exportados desde el @azure/functions módulo. Para más información, vea la Guía para desarrolladores de Node.js.
El http método del objeto exportado app define un desencadenador HTTP. El método storageQueue en output 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.' };
},
});
El http método del objeto exportado app define un desencadenador HTTP. El método storageQueue en output 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 function.json 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:
En Python para Azure Functions versión 2, debe definir 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, vea Incorporación de enlaces a una función existente de 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 son compatibles con las versiones principales del entorno en tiempo de ejecución de Azure Functions:
| Tipo | 1.x1 | 2.x y versiones posteriores2 | Desencadenador | Entrada | Salida |
|---|---|---|---|---|---|
| Blob Storage | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Cosmos DB | ✔ | ✔ | ✔ | ✔ | ✔ |
| Azure Data Explorer | ✔ | ✔ | ✔ | ||
| SQL de Azure | ✔ | ✔ | ✔ | ✔ | |
| Dapr4 | ✔ | ✔ | ✔ | ✔ | |
| Event Grid | ✔ | ✔ | ✔ | ✔ | |
| Event Hubs | ✔ | ✔ | ✔ | ✔ | |
| HTTP y webhooks | ✔ | ✔ | ✔ | ✔ | |
| IoT Hub | ✔ | ✔ | ✔ | ||
| Kafka3 | ✔ | ✔ | ✔ | ||
| Mobile Apps | ✔ | ✔ | ✔ | ||
| Protocolo de contexto de modelo | ✔ | ✔ | |||
| Centros de notificaciones | ✔ | ✔ | |||
| Queue Storage | ✔ | ✔ | ✔ | ✔ | |
| Redis | ✔ | ✔ | ✔ | ✔ | |
| RabbitMQ3 | ✔ | ✔ | ✔ | ||
| SendGrid | ✔ | ✔ | ✔ | ||
| Autobús de servicio | ✔ | ✔ | ✔ | ✔ | |
| Servicio Azure SignalR | ✔ | ✔ | ✔ | ✔ | |
| Table Storage | ✔ | ✔ | ✔ | ✔ | |
| Temporizador | ✔ | ✔ | ✔ | ||
| Twilio | ✔ | ✔ | ✔ |
1El soporte para la versión 1.x del entorno de ejecución de Azure Functions finalizará el 14 de septiembre de 2026. Se recomienda encarecidamente migrar las aplicaciones a la versión 4.x para obtener soporte completo.
2 A partir de la versión 2.x del entorno de ejecución, se deben registrar todos los enlaces excepto HTTP y temporizador. Consulte Registro de extensiones de enlace de Azure Functions.
3 Los desencadenadores no se admiten en el plan de consumo. Este tipo de enlace requiere desencadenadores controlados por tiempo de ejecución.
4 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.
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.
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| 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 | |
| Azure Service Bus |
Desencadenador Salida |
Vínculo |
| Servicio Azure SignalR |
Desencadenador Entrada Salida |
|
| Table Storage |
Entrada Salida |
|
| Temporizador | Desencadenador | Vínculo |
| Twilio | Salida | Vínculo |
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| 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 | |
| Azure Service Bus |
Desencadenador Salida |
Vínculo |
| Servicio Azure SignalR |
Desencadenador Entrada Salida |
|
| Table Storage |
Entrada Salida |
|
| Temporizador | Desencadenador | Vínculo |
| Twilio | Salida |
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| 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 |
|
| Event Hubs |
Desencadenador Salida |
|
| IoT Hub |
Desencadenador Salida |
|
| HTTP | Desencadenador | Vínculo |
| Queue Storage |
Desencadenador Salida |
Vínculo |
| RabbitMQ |
Desencadenador Salida |
|
| SendGrid | Salida | |
| Azure Service Bus |
Desencadenador Salida |
Vínculo |
| Servicio Azure SignalR |
Desencadenador Entrada Salida |
|
| Table Storage |
Entrada Salida |
|
| Temporizador | Desencadenador | |
| Twilio | Salida |
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| Blob Storage |
Desencadenador Entrada Salida |
|
| Azure Cosmos DB (la base de datos de Azure Cosmos) |
Desencadenador Entrada Salida |
|
| Azure SQL |
Desencadenador Entrada Salida |
|
| Cuadrícula de Eventos |
Desencadenador Salida |
|
| Event Hubs |
Desencadenador Salida |
|
| IoT Hub |
Desencadenador Salida |
|
| HTTP | Desencadenador | Vínculo |
| Queue Storage |
Desencadenador Salida |
|
| RabbitMQ |
Desencadenador Salida |
|
| SendGrid | Salida | |
| Azure Service Bus |
Desencadenador Salida |
|
| Servicio Azure SignalR |
Desencadenador Entrada Salida |
|
| Table Storage |
Entrada Salida |
|
| Temporizador | Desencadenador | |
| Twilio | Salida |
El código de enlace para Python dependerá de la versión del modelo de Python.
| Servicio | Ejemplos | Ejemplos |
|---|---|---|
| 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 |
|
| Event Hubs |
Desencadenador Salida |
|
| IoT Hub |
Desencadenador Salida |
|
| HTTP | Desencadenador | Vínculo |
| Queue Storage |
Desencadenador Salida |
|
| RabbitMQ |
Desencadenador Salida |
|
| SendGrid | Salida | |
| Azure Service Bus |
Desencadenador Salida |
Vínculo |
| Servicio Azure SignalR |
Desencadenador Entrada Salida |
|
| Table Storage |
Entrada Salida |
|
| Temporizador | Desencadenador | |
| Twilio | Salida |
Enlaces personalizados
Puede crear enlaces de entrada y salida personalizados. Las vinculaciones deben desarrollarse en .NET, pero se pueden consumir desde cualquier lenguaje compatible. Para más información sobre la creación de enlaces personalizados, vea Creación de enlaces de entrada y salida personalizados.