Examen de tipos de enlaces de entrada y salida
El acceso a los datos y su procesamiento son tareas fundamentales en muchas soluciones de software. Imagine algunos de estos escenarios:
- Se le pide que implemente una manera de mover los datos entrantes desde Azure Blob Storage a Azure Cosmos DB.
- Quiere publicar los mensajes entrantes en una cola para que otro componente los procese en la empresa.
- El servicio necesita captar las puntuaciones de jugadores de una cola y actualizar un panel de resultados en línea.
Todos estos ejemplos tienen en común el movimiento de datos. El origen y los destinos de datos difieren según el escenario, pero el patrón es similar. Se conecta a un origen de datos y lee y escribe datos. Azure Functions le ayuda a integrarse con datos y servicios mediante el uso de enlaces.
¿Qué es un enlace?
En Azure Functions, los enlaces permiten conectarse de manera declarativa a datos desde el código. Facilitan la integración con flujos de datos de forma coherente en una función. Puede tener varios enlaces que proporcionan acceso a diferentes elementos de datos. Esta integración es eficaz porque puede conectarse a los orígenes de datos sin necesidad de programar una lógica de conexión específica (como conexiones de base de datos o interfaces de API web).
Tipos de enlaces
Hay dos tipos de enlaces que puede usar en las funciones:
Enlace de entrada: se conecta a un origen de datos. La función puede leer datos de estos orígenes de entrada.
Enlace de salida: se conecta a un destino de datos. La función puede escribir datos en estos destinos de salida.
También hay desencadenadores, un tipo especial de enlaces de entrada que hacen que una función se ejecute. Por ejemplo, una notificación de Azure Event Grid se puede configurar como un desencadenador. Cuando se produce un evento, se ejecuta la función.
Tipos de enlaces admitidos
El tipo de enlace define dónde se leen o envían los datos. Hay un enlace para responder a solicitudes web, y una amplia gama de enlaces para interactuar directamente con diversos servicios de Azure, así como con servicios de terceros.
Un tipo de enlace se puede usar como entrada, salida o ambos. Por ejemplo, una función puede escribir en el enlace de salida de Blob Storage, pero una actualización de Blob Storage puede desencadenar otra función.
Entre los tipos de enlace comunes se incluyen los siguientes:
- Blob Storage
- Colas de Azure Service Bus
- Azure Cosmos DB
- Azure Event Hubs
- Archivos externos
- Tablas externas
- Puntos de conexión HTTP
Estos son solo un ejemplo. Existen más y, adicionalmente, las funciones cuentan con un modelo de extensibilidad para agregar más enlaces.
Propiedades de los enlaces
Se requieren tres propiedades en todos los enlaces, aunque es posible que deba proporcionar más propiedades en función del tipo de enlace y almacenamiento que use.
Name: define el parámetro de función a través del que se accede a los datos. Por ejemplo, en un enlace de entrada de cola, esta propiedad es el nombre del parámetro de función que recibe el contenido del mensaje de cola.
Tipo: identifica el tipo de enlace. Por ejemplo, el tipo de datos o servicio con el que desea interactuar.
Dirección: indica que fluyen los datos de dirección. Por ejemplo, ¿es un enlace de entrada o salida?
Además, la mayoría de los tipos de enlace también necesitan una cuarta propiedad:
- Connection: proporciona el nombre de una clave de configuración de aplicación que contiene la cadena de conexión. Los enlaces usan cadenas de conexión almacenadas en la configuración de la aplicación para mantener los secretos fuera del código de la función. Las cadenas de conexión hacen que el código sea más configurable y seguro.
Creación de un enlace
Los enlaces se definen en JSON. Un enlace se configura en el archivo de configuración de la función, que se denomina function.json y se encuentra en la misma carpeta que el código de función.
Examinemos un ejemplo de enlace de entrada:
...
{
"name": "headshotBlob",
"type": "blob",
"path": "thumbnail-images/{filename}",
"connection": "HeadshotStorageConnection",
"direction": "in"
},
...
Para crear este enlace:
Creamos un enlace en el archivo function.json.
Proporcionamos el valor de la variable
name
. En este ejemplo, la variable hospeda los datos de blob.Proporcionamos la propiedad
type
del almacenamiento. En el ejemplo precedente, se usa Blob Storage.Se proporciona la propiedad
path
, que especifica el contenedor y el nombre del elemento que se coloca en él. La propiedadpath
es obligatoria cuando se usa el desencadenador de blobs y se debe proporcionar en la forma que se muestra aquí, con llaves alrededor de la parte del nombre de archivo de la ruta de acceso. Esta sintaxis crea una expresión de enlace que permite hacer referencia al nombre del blob en otros enlaces y en el código de la función. En este ejemplo, un parámetro de la función denominado filename se rellenará con el nombre de archivo del blob que ha desencadenado la función.Proporcione el nombre de la configuración de cadena
connection
que se ha definido en el archivo de configuración de la aplicación. El nombre sirve como clave para encontrar la cadena de conexión para conectarse a la cuenta de almacenamiento.Defina la propiedad
direction
comoin
. Lee datos del blob.
Los enlaces se usan para conectarse a los datos en la función. En este ejemplo, se ha usado un enlace de entrada para conectar las imágenes de usuario que la función procesará como miniaturas.