El auge de la IA en el sector del Transporte y la Logística
14 octubre, 2021
¿Está la IA impulsando la Transformación Digital? ¿O es al revés?
22 octubre, 2021

En este post vamos a explicar cómo incorporar un Service Bus en Logic Apps. Enviaremos y recibiremos mensajes del Service Bus utilizando como medio las Logic Apps.

Requisitos

Necesitarás contar con una cuenta de correo de Outlook ya creada.

Este post es apto para iniciados y no iniciados en el portal de Azure.  

Arquitectura

El proceso debe comenzar cada vez que nos llegue un correo propio a cierto buzón de Outlook. Una vez detectado, se debe crear un mensaje en una cola de Service Bus (SB) y, a continuación, crear un archivo en un Blob Storage. Necesitaremos dos Logic Apps (LA):

  1. Testinglasb1: envía un mensaje al Service Bus cada vez que nos llega un correo propio
  2. Testinglasb2: recoge el mensaje que llega al Service Bus y crea un archivo en un blob

Por lo tanto, la arquitectura es: Ilustración 1. Arquitectura

Ilustración 1. Arquitectura

Outlook: Aplicación de correo, se utilizará para lanzar una LA cada vez que llegue un correo propio.

Logic App: Recurso para la automatización de procesos, se utilizará para detectar la llegada de un correo propio al buzón y se enviará un mensaje al SB. También, recibirá el mensaje del SB y creará un archivo en un Storage Account (SA).

Service Bus: Recurso administrador de colas de mensajes, se utilizará como mediador entre las LA para mostrar cómo enviar mensajes al recurso y cómo recibirlos.

Storage Account: Recurso de almacenamiento, en este caso se creará un Blob Storage para el almacenamiento de archivos.  

Creación de recursos

Accederemos al portal de Azure para la creación de los recursos. Una vez allí entraremos en el Grupo de Recursos (RG) que queramos utilizar (también se puede crear uno nuevo pulsando sobre el create de la segunda imagen): Ilustración 2. Resource Groups tab

Ilustración 2. Resource Groups tab

Ilustración 3. RG existentes

Ilustración 3. RG existentes

Pulsando sobre +Create podremos crear recursos dentro de este RG: Ilustración 4. Crear recursos en RG

Ilustración 4. Crear recursos en RG

Storage Account

Buscamos ‘storage account’ y pulsamos sobre Create para comenzar con la creación del recurso: Ilustración 5. Búsqueda de storage account

Ilustración 5. Búsqueda de storage account

Ilustración 6. Creación de recurso storage account

Ilustración 6. Creación de recurso storage account

Elegimos los valores para el nombre de la cuenta de almacenamiento, la región en la que queremos alojarla, el rendimiento y la redundancia y pulsamos sobre Review+Create: Ilustración 7. Valores creación storage account

Ilustración 7. Valores creación storage account

Si pasamos la validación podremos pulsar sobre Create: Ilustración 8. Crear storage account

Ilustración 8. Crear storage account

Una vez creado pulsaremos sobre Go to resource y, en el menú lateral, elegiremos Containers: Ilustración 9. Storage account containers

Ilustración 9. Storage account containers

Pulsaremos sobre +Container para crear un contenedor nuevo para nuestros archivos: Ilustración 10. Crear storage account container

Ilustración 10. Crear storage account container

Elegimos un nombre para nuestro contenedor y pulsamos sobre Create: Ilustración 11. Valores creación contenedor

Ilustración 11. Valores creación contenedor

Ilustración 12. Contenedores

Ilustración 12. Contenedores

Service Bus

De la misma manera que el anterior recurso, buscamos ‘service bus’ y pulsamos sobre Create para comenzar a crear el recurso: Ilustración 13. Creación de recurso Service Bus

Ilustración 13. Creación de recurso Service Bus

Elegimos el nombre, la localización y el tipo de pago que queremos; así pues, Basic, Standard y Premium, siendo más caros progresivamente. Cuando tengamos los valores que necesitamos pulsamos sobre Review+créate: Ilustración 14. Valores creación service bus

Ilustración 14. Valores creación service bus

Si pasamos la validación podremos pulsar sobre Create: Ilustración 15. Creación service bus

Ilustración 15. Creación service bus

Una vez creado pulsaremos sobre Go to resource y, en el menú lateral, elegiremos Queues y crearemos una nueva cola de mensajes: Ilustración 16. Creación service bus queue

Ilustración 16. Creación service bus queue

Elegimos el nombre para nuestra cola de mensajes, elegimos la configuración que necesitemos y pulsamos sobre Create: Ilustración 17. Valores creación service bus queue

Ilustración 17. Valores creación service bus queue

  Ilustración 18. Colas

Ilustración 18. Colas

Logic Apps

De la misma manera que los anteriores recursos, buscamos ‘logic app’ y pulsamos sobre Create para comenzar a crear el recurso: Ilustración 19. Creación de recurso Logic App

Ilustración 19. Creación de recurso Logic App

Elegimos el nombre de nuestra primera LA, como tipo elegiremos Consumption para que nos cobren cada vez que se lance la LA y no un precio fijo al mes. Cuando esté a nuestro gusto pulsamos sobre Review+create Ilustración 20. Valores creación de recurso Logic App

Ilustración 20. Valores creación de recurso Logic App

Este recurso no requiere que pasemos una validación, podremos pulsar sobre Create para terminar de crear el recurso: Ilustración 21. Valores creación de recurso Logic App

Ilustración 21. Valores creación de recurso Logic App

Ahora solo debemos replicar esta sección cambiando en el nombre de la logic app el 1 por un 2: Ilustración 22. Recursos creados

Ilustración 22. Recursos creados

 

Creación de flujo de ambas Logic Apps

Una vez creados todos los recursos necesarios podemos centrarnos en el flujo de ambas LA.

Proceso de envío de mensajes al SB

Para la primera en la que nos centraremos, testinglasb1, necesitaremos un desencadenador del servicio Outlook, en el que tendremos que loguearnos con el correo que queramos monitorizar. Ilustración 23. Elección desencadenador 1

Ilustración 23. Elección desencadenador 1

Una vez logueados tendremos que elegir el filtrado del desencadenador; en este caso, elegimos la carpeta que queremos y añadimos los parámetros To, From e Include Attachments para filtrar aquellos correos que se envían y se reciben en la misma cuenta y, además, incluir los adjuntos que puedan llegar en el email. Ilustración 24. Valores desencadenador 1

Ilustración 24. Valores desencadenador 1

Después enviaremos el mensaje del correo como cuerpo del mensaje al Service Bus, al crear un conector de Service Bus deberemos elegir entre las opciones que nos aparecen, elegiremos Send Message: Ilustración 25. Send message Service Bus

Ilustración 25. Send message Service Bus

Y tendremos que elegir el Service Bus con el que queramos crear la conexión: Ilustración 26. SB Connection 1

Ilustración 26. SB Connection 1

Ilustración 27. SB Connection 2

Ilustración 27. SB Connection 2

Elegiremos los valores del mensaje que estamos enviando al Service Bus, podemos utilizar valores que el desencadenador nos ofrece: Ilustración 28. Valores conector SB

Ilustración 28. Valores conector SB

El aspecto final de nuestra primera LA es el siguiente: Ilustración 29. Flujo LA1

Ilustración 29. Flujo LA1

Proceso de recogida de mensajes del SB

Para recoger los mensajes que se reciben en el SB utilizaremos la segunda LA, testinglasb2. Necesitaremos un desencadenador de SB para detectar cuándo llegan los mensajes. Ilustración 30. Elección desencadenador 2

Ilustración 30. Elección desencadenador 2

Detectará automáticamente la conexión que hemos creado en la LA anterior y solo deberemos elegir Continue. Establecemos los valores necesarios para el conector, entre ellos la cola que deberá monitorizar y cada cuánto tiempo revisar dicha cola. Ilustración 31. Valores desencadenador 2

Ilustración 31. Valores desencadenador 2

Añadimos un nuevo paso y buscamos entre los conectores ‘Azure Blob Storage’ y elegimos crear un nuevo blob Ilustración 32. Elección conector Blob Storage

Ilustración 32. Elección conector Blob Storage

Nos pedirá crear la conexión para el storage account, si pulsamos sobre Sign in nos loguearemos: Ilustración 33. Creación conexión Blob Storage

Ilustración 33. Creación conexión Blob Storage

Una vez creada la conexión nos pedirá el nombre del storage y el path dónde crearemos nuestro archivo, además del nombre del blob y el contenido del mismo. Ilustración 34. Valores conector Blob Storage

Ilustración 34. Valores conector Blob Storage

El flujo completo de nuestra segunda LA sería el siguiente: Ilustración 35. Flujo LA2

Ilustración 35. Flujo LA2

 

Revisión de la ejecución del proceso completo

Para comprobar el flujo completo de nuestro proceso solo deberemos enviarnos un email a nosotros mismos para lanzar el proceso. Esto provocará la ejecución de la primera LA, que enviará un mensaje al Service Bus. Con el mensaje del Service Bus, se desencadenará la segunda LA, que escribirá un archivo en el Blob Storage Account. Si el proceso completo es correcto podremos ver un archivo en el contenedor que hemos creado: Ilustración 36. Archivo creado Blob storage

Ilustración 36. Archivo creado Blob storage

 

Errores encontrados

Al lanzar el proceso de incorporación de Service Bus en Logic Apps, encontramos distintos errores, para algunos se encuentra solución y para otros no:

Error de límite de caracteres

Al crear el mensaje del Service Bus en la primera Logic App nos sentiremos atraídos a colocar como Message ID el id del mensaje de correo que recibimos: Ilustración 37. Message Id email

Ilustración 37. Message Id email

Esto derivará en un error por el número de caracteres, ya que el id del mensaje de correo cuenta con 152 caracteres (al menos el que yo envié) y el id del mensaje del SB tiene un límite de 128 caracteres. La solución vendría dada en el propio post, eligiendo otro valor como Message Id del Service Bus.

Error por autorización del storage account

En el post se muestra la creación de la conexión del storage account utilizando como tipo de autorización Azure AD Integrated. Al lanzar la LA tendremos un error de autorización y no nos permitirá la creación de archivos. Para solucionar esto deberemos entrar en la conexión y elegir en el panel izquierdo Edit API Connection: Ilustración 38. Edit API Connection

Ilustración 38. Edit API Connection

Aquí deberemos cambiar el tipo de autenticación a Access Key, nos pedirá el nombre de la cuenta de almacenamiento y el Access Key, una vez establecidos pulsaremos sobre Save. *El Access Key puede encontrarse en el Storage Account pulsando sobre la pestaña Access Keys, solo deberemos mostrarlas y copiar la Key 1: Ilustración 39. Access Key Storage Account

Ilustración 39. Access Key Storage Account

Error de lectura del archivo creado

En este caso, encontraremos que si nos descargamos el archivo que se ha creado en el blob, no tiene una extensión reconocible. Esto, probablemente, viene dado por no tipar el contenido del blob al crearlo desde la LA; sin embargo, no ha sido testeada la solución a ello. Si abrimos el archivo desde Visual Code (por ejemplo) podremos observar una estructura HTML con el texto del email enviado.  

Resumen

Hemos creado un proceso completo desde el envío de un email a uno mismo hasta la creación de un archivo con el cuerpo del email recibido, creado los distintos recursos que se necesitaban para el proceso requerido y encontrado y solucionado ciertos errores del proceso.  

Finalmente, hemos terminado el proceso de incorporación de Service Bus en Logic Apps.

 

¡Muchas gracias por leer hasta aquí! Sigue atento a nuestras novedades 😊  

 

Raquel Rodríguez Marcos

raquel.rodriguez.marcos@outlook.com

https://www.linkedin.com/in/raquel-rodriguez-marcos/

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

NEWSLETTER