Examen de tipos de enlaces de entrada y salida

Completado

El acceso a los datos y su procesamiento son tareas fundamentales en muchas soluciones de software. Imagine algunos de estos escenarios:

  • Se le ha pedido 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:

  1. Creamos un enlace en el archivo function.json.

  2. Proporcionamos el valor de la variable name. En este ejemplo, la variable hospeda los datos de blob.

  3. Proporcionamos la propiedad type del almacenamiento. En el ejemplo precedente, se usa Blob Storage.

  4. Se proporciona la propiedad path, que especifica el contenedor y el nombre del elemento que se coloca en él. La propiedad path 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.

  5. Proporcione el nombre de la configuración de cadena connection que se ha definido en el archivo de configuración de la aplicación. Sirve como una clave para encontrar la cadena de conexión para conectarse a su cuenta de almacenamiento.

  6. Defina la propiedad direction como in. 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.