Como continuación al primer post de creación del primer pipeline en Azure Data Factory, en este post hablaré de los distintos triggers y linked services en Azure Data Factory que existen (aplicando alguno a nuestro ADF montado en el primer post) y de las distintas opciones de seguridad a la hora de añadir el linked service.

Tipos de Triggers en Azure Data Factory

Estos son los triggers en Azure Data Factory:

  • Ejecución manual. Siempre existe la posibilidad de lanzar una ejecución a mano de un pipeline. Esta ejecución de puede desencadenar desde el portal (como se vio en el post anterior), desde la API REST que ofrece ADF (Azure Data Factory), desde el SDK de .NET o desde Powershell (yo suelo trabajar con el módulo AZ).
  • Trigger de ventana de saltos constantes: Es un tipo de trigger que se dispara a intervalos de tiempo periódicos desde una hora de inicio especificada. Son una serie de intervalos de tiempo contiguos, de tamaño fijo, no superpuestos. Es importante recordar que estos triggers pueden configurarse para iniciar cargas con fecha pasada y futura. Tiene una relación uno a uno con un pipeline y solo puede hacer referencia a un solo pipeline.
  • Trigger de programación: Ejecuta pipelines en un horario determinado. Este trigger admite opciones de calendario periódicas y avanzadas. Solo puede activar cargas con fecha futura y tienen una relación de muchos a muchos.
  • Trigger basado en eventos: Es un trigger basado en eventos que ejecuta pipelines en respuesta a un evento, como la llegada de un archivo o la eliminación de un archivo, en Azure Blob Storage.

Caso Práctico

Para nuestro caso práctico, vamos a crear un trigger basado en eventos apuntando a la cuenta de almacenamiento que usábamos para subir el fichero delimitado por comas dentro de una carpeta llamada coches. De esta forma, cuando se suba un nuevo fichero a la cuenta de almacenamiento se desencadenará el pipeline de copia.

Probablemente, si es una suscripción nueva, tendréis que activar el resource provider de Event Grid en dicha suscripción, en caso contrario, os dará un error y el trigger no se creará.

Una vez creado, lo asignamos al pipeline desde Trigger -> New/Edit y publicamos todo.

Para probar que todo funciona, he borrado todos los registros de la tabla marcas de SQL y vuelvo a subir el fichero a la cuenta de almacenamiento, para que se desencadene el pipeline de copia. Tras esto, podemos ver que la tabla se ha cargado de nuevo con los datos del fichero.

Para la parte de seguridad en linked services, nos vamos a apoyar en otro servicio de Azure que nos facilita el almacenamiento de claves y cadenas de conexión, llamado Azure Key Vault. En este servicio se pueden guardar esas contraseñas y cadenas de conexión en secretos, pudiendo publicar distintas versiones del secreto.

Para crear el Key Vault, nos vamos al Marketplace y lo añadimos:

A continuación, hay que crear un linked service para el Key vault para poder ser usado en ADF.

Para el linked service a la cuenta de almacenamiento, vamos a obtener la cadena de conexión de la STA y vamos a crear un secreto en el key vault:

Creamos un secreto con esta key:

Ahora si intentamos hacer un test de conexión desde ADF, nos dará un error ya que nos dirá que el acceso esta denegado. Para solucionarlo hay que dar acceso a ADF al Key vault:

Resultado

Una vez configurado el acceso, podemos hacer un test de la conexión:

Para el linked service al SQL Azure, se hace de igual forma, pero podemos hacerlo de dos formas:

  • Guardar en un secreto solo la contraseña de acceso al SQL
  • Guardar la cadena de conexión completa

En posteriores posts, hablaremos de como configurar los linked services tanto con Managed Service Identity (MSI) como por Service principal.

Última modificación: febrero 18, 2021

Autor