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 provocan la ejecución de una función. 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 Azure Cosmos DB. | Timer | Blob Storage | Azure Cosmos DB |
Event Grid se utiliza para leer una imagen en Blob Storage y un documento de Azure Cosmos DB con el fin de enviar un correo electrónico. | Event Grid | Blob Storage y Azure 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
yout
- Algunos enlaces admiten la dirección especial
inout
. Si utilizainout
, solo estará disponible la opcióninout
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)2 | ✔ | ✔ | ✔ | ✔ | |
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.
Las versiones de extensión de enlace específicas solo se admiten mientras se admite el SDK del 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 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 |
Azure SQL: versión preliminar | 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
- Patrones y expresiones de enlace
- Uso del valor devuelto de una función de Azure
- Cómo registrar una expresión de enlace
- Prueba:
- Control de errores de enlace