Ejecución de ADF pipelines desde Azure Logic Apps

La integración de los servicios de Azure, así como con los servicios distribuidos por Microsoft, esta muy bien lograda en la mayoría de los casos; como veremos en este artículo, donde integraremos Azure Logic App con Azure Data Factory para la ejecución de pipelines a demanda, sin intervención de las áreas técnicas.

Situación actual

Se cuenta con un grupo de recursos que tiene una instancia de Azure Data Factory, y una Azure Logic App.

Servicios aprovisionados en azure

La logic app se encuentra en blanco, y no cuenta con identificación dentro del directorio activo.

Azure Logic App vista de código
Identity de la Azure Logic App

En cuanto al Azure Data Factory (ADF), tenemos un único pipeline que simplemente contiene una actividad de espera por 5 segundos; algo simple para la demostración.

Pipeline desarrollado en Azure Data Factory

Desarrollo de lógica en Azure Logic App

Inicialmente, la instancia de Azure Logic App debe contar con privilegios para acceder al Azure Data Factory; luego desarrollaremos la lógica.

Cesión de permisos de Azure Logic App sobre Azure Data Factory

Creación de Logic App Managed Identity dentro del Active Directory

Dentro del Logic App, en la opción de Identity, activaremos la identificación asignada por el sistema:

Activación de managed identity de Azure Logic App

Al dar clic en el botón “Save”, nos aparecerá un mensaje con la acción que se ejecutará dentro del directorio activo.

Activación de managed identity de Azure Logic App

Al dar clic en “Yes”, se nos mostrará la identificación del recurso, y un mensaje que dice que el recurso ha sido registrado en el directorio activo de Azure, y que podremos habilitarle permisos hacia otros recursos.

Activación de managed identity de Azure Logic App

Cesión de permisos por IAM

Ahora que Azure Logic App tiene una identificación dentro del directorio activo, le cederemos permisos de contributor sobre la instancia de Azure Data Factory (ADF). Para ello, dentro de la instancia de ADF, vamos a la opción “Access control (IAM)”

Cesión de permisos en Azure Data Factory

Allí asignaremos los permisos dando clic en el botón “Add role assignment”. Dentro de los roles, seleccionamos “Contributor”, luego clic en “Next”

Roles en Azure Data Factory

Clic sobre la opción “+ Select members”. En el buscador escribimos el nombre de la instancia de Azure Logic App, en este caso “logic-89”; allí saldrán listados los recursos que incluyan “logic-89” dentro de su nombre, seleccionamos el deseado. Luego clic en “Select” y “Next”

Cesión de permisos para Azure Logic App sobre Azure Data Factory

Finalmente, tendremos el resumen de la cesión de permisos que haremos:

Roles de Azure Data Factory

Clic en “Review + assign” para completar la cesión.

Desarrollo dentro de Logic App

Configurando el trigger

En la logic app, nos dirigimos a la opción “Logic app designer”, dentro de la cual buscaremos y seleccionaremos “Blank Logic App”

Creando logic app desde cero

Como disparador, seleccionaré un HTTP request

Configurando trigger en Azure Logic App

Luego, “When a HTTP request is received”, lo cual me habilitará una URL para hacer el llamado a la ejecución de esta lógica.

Configurando disparador sobre Azure Logic App

El trigger quedará así:

URL Logic App

La URL nos será aprovisionada cuando guardemos la logic app por primera vez.

Haciendo el llamado a la ejecución del pipeline en ADF

En la parte inferior después del trigger, daremos clic sobre el botón “+ New step”. En la operación, buscaremos “azure data factory” y seleccionaremos “Create a pipeline run”

Ejecutar pipeline de ADF desde Logic App

Nos pedirá autenticación, para lo cual daremos clic sobre “Connect with managed indentity (preview)”, como se muestra en la siguiente imagen:

Creando API connection en Logic App

Luego nos pedirá un nombre, y al dar clic en “Create”, lo que sucederá que es que se nos creará un nuevo recurso que almacenará esta autenticación, el recurso es una API connection.

Validando API Connection en Logic App

En la siguiente imagen podemos ver como en el grupo de recursos aparece la API connection llamada “azuredatafactory”

Grupo de recursos en Azure

De vuelta en el designer de la logic app, iremos desplegando las opciones de cada campo, y seleccionando el valor deseado.

Configurando ejecución de pipeline de ADF desde Logic App

En este punto, hemos finalizado el diseño de la logic app, por lo que podremos dar clic en el botón “Save” que se encuentra en la parte superior. Esto nos generará la URL que disparará nuestro proceso. Sin embargo, también podremos probarla dando clic en el botón “Run Trigger” que se encuentra arriba.

Ejecutando logic app

Al probar, vemos que se ha ejecutado cada paso satisfactoriamente.

Resultados de la ejecución de una logic app

Si vamos a las opciones de monitoreo de Azure Data Factory, veremos que hubo una ejecución manual, es decir que no se dio a raíz de un trigger nativo de ADF, y que ha finalizado de forma exitosa.

Resultado de la ejecución de pipeline en ADF

Ahora, en la vista general de la logic app, veremos que reporta una ejecución a la misma hora y minuto en que se disparó el pipeline de ADF; demostrando así que fue la logic app quien envió la instrucción de ejecución hacia ADF.

Historico de ejecuciones de Azure Logic App

Consumo

Finalizado el desarrollo, podremos obtener la URL que disparará la ejecución del logic app, quien a su vez, ejecutará el proceso desarrollado en ADF. Para obtener la URL, solo debemos ir al designer de logic app

URL de logic apps

Esta URL la podremos colocar en un botón de un reporte de Power BI, o cualquier otro reporteador. Así mismo, lo podremos ubicar en un botón de una Power Apps. Las posibilidades son muchas, al ser una URL, la podremos ubicar casi en cualquier aplicación que permita la configuración de links externos.

Conclusiones y consideraciones finales

Estas integraciones entre servicios de manera segura, nos habilita un mundo de opciones donde la única limitante es la creatividad al momento de diseñar una arquitectura que logre alcanzar los objetivos técnicos, de seguridad y de negocio.

Sin embargo, dado que esta URL es pública, debemos actuar con prudencia al momento de colocarla en cualquier lugar, pues la ejecución indiscriminada podría llevarnos a fallos en los procesos y/o incremento en el consumo. Por ello, sugiero incluir esta URL en un servicio como Azure API Management, quien nos permite colocar barreras de seguridad ante cualquier ejecución.

Mira este otro artículo sobre integración entre Microsoft Power BI y Microsoft Power Automate.

You May Also Like