Conceptos básicos sobre los enlaces y desencadenadores de Azure Functions

En este artículo obtendrá información sobre los conceptos de alto nivel que rodean los enlaces y desencadenadores de Azure Functions.

Los desencadenadores son lo que provocan que una función se ejecute. Un desencadenador define cómo se invoca una función y cada función debe tener exactamente un desencadenador. Los desencadenadores tienen datos asociados, que a menudo son la carga de la función.

El enlace a una función es una manera de conectar otro recurso a la función mediante declaración. Los enlaces pueden estar conectados como enlaces de entrada, enlaces de salida o ambos. Los datos de los enlaces se proporcionan a la función como parámetros.

Puede mezclar y asignar enlaces diferentes para satisfacer sus necesidades. Los enlaces son opcionales y cada función puede tener uno o varios enlaces de entrada y de 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 siguientes ejemplos de cómo se pueden implementar las distintas 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* None Cola*
Un trabajo programado lee los contenidos de Blob Storage y crea un nuevo documento de Cosmos DB. Timer Blob Storage Cosmos DB
Event Grid se utiliza para leer una imagen en Blob Storage y un documento de Cosmos DB con el fin de enviar un correo. Event Grid Blob Storage y Cosmos DB SendGrid
Un webhook que usa Microsoft Graph para actualizar una hoja de Excel. HTTP None Microsoft Graph

* Representa diferentes colas

Estos ejemplos no pretenden ser exhaustivos, pero sirven para ilustrar cómo se pueden utilizar desencadenadores y enlaces de forma conjunta.

Definiciones de desencadenador y enlace

Los desencadenadores y enlaces se definen de forma diferente en función del lenguaje de desarrollo.

Idioma Los desencadenadores y enlaces se configuran por...
Biblioteca de clases de C#      la decoración de métodos y parámetros con atributos de C#
Java      la decoración de métodos y parámetros con anotaciones de Java
JavaScript/PowerShell/Python/TypeScript      la actualización de function.json (esquema)

Para los lenguajes que dependen de function.json, el portal proporciona una interfaz de usuario para agregar enlaces en la pestaña Integration (Integración). También se puede editar el archivo directamente en el portal, en la pestaña Code + test (Código y prueba) de la función. Visual Studio Code permite agregar enlaces a un archivo function.json de manera sencilla, solo hay que seguir un conjunto práctico de mensajes.

En .NET y Java, el tipo de parámetro define el tipo de datos de entrada. Por ejemplo, use string para enlazar al texto de un desencadenador de cola, una matriz de bytes para leerla como binaria y un tipo personalizado para deserializar a un objeto. Dado que ni las funciones de la biblioteca de clases de .NET ni las funciones de Java utilizan function.json para las definiciones de enlace, no se pueden crear ni editar en el portal. La edición del portal en C# se basa en un script en C#, que usa function.json, en lugar de los atributos.

Para más información sobre cómo agregar enlaces a funciones existentes, consulte Conexión de funciones a servicios de Azure mediante enlaces.

Para los lenguajes que se escriben dinámicamente, como JavaScript, use la propiedad dataType del archivo dataType. Por ejemplo, para leer el contenido de una solicitud HTTP en formato binario, establezca dataType en binary:

{
    "dataType": "binary",
    "type": "httpTrigger",
    "name": "req",
    "direction": "in"
}

Otras opciones para dataType son stream y string.

Dirección de los enlaces

Todos los desencadenadores y enlaces tienen una propiedad direction en el archivo direction:

  • En el caso de los desencadenadores, esta propiedad siempre aparece como in
  • Los enlaces de entrada y de salida usan in y out
  • Algunos enlaces admiten la dirección especial inout. Si utiliza inout, solo estará disponible la opción inout mediante la pestaña Integrar en el portal.

Cuando se usan atributos en una biblioteca de clases para configurar los desencadenadores y los enlaces, la dirección se proporciona en un constructor de atributos o se deduce del tipo de parámetro.

Incorporación de 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.

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.x 2.x y posteriores1 Desencadenador Entrada Output
Blob Storage
Azure Cosmos DB
Azure SQL: versión preliminar
Dapr3
Event Grid
Event Hubs
HTTP webhooks
IoT Hub
Kafka2
Mobile Apps
Centros de notificaciones
Queue Storage
RabbitMQ2
SendGrid
Service Bus
SignalR
Table storage
Temporizador
Twilio

1 A partir del entorno en tiempo de ejecución de la versión 2.x, se deben registrar todos los enlaces, excepto HTTP y el temporizador. Consulte Registro de extensiones de enlace.

2 Los desencadenadores no se admiten en el plan de consumo. Requiere desencadenadores controlados por el runtime.

3 Solo se admite en Kubernetes, 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.

Ejemplos de código de enlaces

Use la tabla siguiente para buscar 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.

Servicio Ejemplos Ejemplos
Blob Storage Desencadenador
Entrada
Salida
Vínculo
Azure Cosmos DB Desencadenador
Entrada
Salida
Vínculo
Event Grid 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
SignalR Desencadenador
Entrada
Salida
Almacenamiento de tablas Entrada
Salida
Temporizador Desencadenador Vínculo
Twilio Salida Vínculo

Enlaces personalizados

Puede crear enlaces de entrada y salida personalizados. Los enlaces se deben crear en .NET, pero se pueden consumir en cualquier lenguaje admitido. Para más información sobre la creación de enlaces personalizados, vea Creación de enlaces de entrada y salida personalizados.

Recursos

Pasos siguientes