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.
En este artículo
Situación actual
Se cuenta con un grupo de recursos que tiene una instancia de Azure Data Factory, y una Azure Logic App.
La logic app se encuentra en blanco, y no cuenta con identificación dentro del directorio activo.
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.
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:
Al dar clic en el botón “Save”, nos aparecerá un mensaje con la acción que se ejecutará dentro del directorio activo.
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.
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)”
Allí asignaremos los permisos dando clic en el botón “Add role assignment”. Dentro de los roles, seleccionamos “Contributor”, luego clic en “Next”
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”
Finalmente, tendremos el resumen de la cesión de permisos que haremos:
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”
Como disparador, seleccionaré un HTTP request
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.
El trigger quedará así:
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”
Nos pedirá autenticación, para lo cual daremos clic sobre “Connect with managed indentity (preview)”, como se muestra en la siguiente imagen:
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.
En la siguiente imagen podemos ver como en el grupo de recursos aparece la API connection llamada “azuredatafactory”
De vuelta en el designer de la logic app, iremos desplegando las opciones de cada campo, y seleccionando el valor deseado.
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.
Al probar, vemos que se ha ejecutado cada paso satisfactoriamente.
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.
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.
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
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.