Los servicios de integración de Azure engloban una serie de productos y servicios que se utilizan con el fin de crear flujos de trabajo automatizados para integrar diferentes sistemas heterogéneos. Uno de los casos de uso más comunes para este tipo de integración es el de exponer flujos de trabajo internos como APIs basadas en REST para aplicaciones de consumo con autenticación adicional y otros factores de calidad de servicio. Los servicios de integración de Azure hereda las ventajas de utilizar APIs REST para que las aplicaciones de consumo automaticen la ejecución de flujos de trabajo internos a través de un canal de comunicación seguro y confiable. Este enfoque se puede implementar fácilmente al utilizar tecnologías de desarrollo estándar en un corto periodo de tiempo.
Azure Logic Apps y API Management: resumen general
Haremos mención a dos servicios principales que se encuentran dentro de los servicios de integración de Azure para demostrar el caso de uso. Esos servicios son Azure API Management y Azure Logic Apps. Las Logic Apps se clasifican en dos tipos: estándar y de consumo. En este artículo utilizaremos ejemplos de Logic Apps de consumo.
Azure Logic Apps
Azure Logic Apps es el servicio de automatización del flujo de trabajo proporcionado por Azure, con diferentes disparadores y acciones adecuadas para crear flujos complejos de transformación y orquestación entre sistemas heterogéneos. La implementación de programación visual fácil de usar proporcionada dentro del portal de Azure para las Logic Apps brinda la flexibilidad necesaria para acelerar el tiempo de implementación con una experiencia mínima en codificación. Los flujos de trabajo de una Logic App se pueden desencadenar usando un evento como una solicitud HTTP, un mensaje en Azure Service Bus, un evento desde Azure Event Grid o un archivo que esté situado en una ubicación SFTP designada o en una cuenta de almacenamiento.
Azure API Management
Azure API Management permite la exposición de servicios internos a través de un conjunto estándar de APIs administrado y seguro para las aplicaciones de consumo. También aporta el espacio necesario para que los desarrolladores API puedan descubrir, suscribirse e implementar aplicaciones mediante el consumo de APIs publicadas en el portal de desarrolladores de Azure API Management. Otras características principales de la plataforma Azure API Management son la limitación de velocidad, el control detallado y el análisis API integral.
Caso de uso: flujo de trabajo de una Azure Logic App liderado por una API en Azure API Manager
Los pasos de implementación del siguiente apartado siguen este caso de uso simple en el que el flujo de trabajo de una Logic App de Azure está encabezado por una API en Azure API Manager.
El acceso a la Logic App está restringido mediante restricciones de IP entrantes para permitir solicitudes solo desde el administrador de la API. Además, la API está protegida con una clave de suscripción API. Usamos CURL como cliente API para demostrar solicitudes de muestra a la API.
Pasos para exponer de forma segura un flujo de trabajo de una Azure Logic App como API REST con Azure API Management
La implementación paso a paso del caso de uso anterior se describe aquí. Esto incluye configuraciones, solicitudes de muestra y respuestas a la API que ayudan a probar el escenario.
Crea el flujo de trabajo de la Logic App
Para simplificar, en este artículo tomamos un flujo simple con disparador HTTP y respondemos con datos embebidos. Se puede mejorar con cualquier lógica compleja dentro del flujo en la implementación real.
Paso 1: crear la Logic App de consumo con el nombre logic-http-mock-response.
Paso 2: a continuación, crear un flujo de trabajo simple usando el diseñador de la Logic App con lo siguiente:
- Disparador HTTP: recibe la siguiente solicitud HTTP.
{ "request": { {"name":" "Paul Stewart" } }
- Redactar acción: preparar una respuesta JSON con el «nombre» de la solicitud de entrada.
{ "response": "Hello Paul Stewart" }
- Acción de respuesta: enviar la respuesta creada en Redactar acción a la persona que ejecuta la función.
Paso 3: guardar la Logic App y probarla usando CURL como se muestra a continuación, para asegurarte de que devuelva la respuesta esperada.
La URL se puede obtener de la página Overview (Descripción general) de la Logic App en Workflow URL (URL del flujo de trabajo).
curl -X POST '<URL de la página de descripción general de la Logic App>' \ --header 'Content-Type: application/json' \ --data '{"request": { {"name":" "Paul Stewart" }}' Devolverá la siguiente respuesta tal y como se esperaba: {"response":"Hello Paul Stewart"}
Crear la API
Tomemos la Logic App anterior como back-end para la API que se creará a continuación.
Ir a la instancia de Azure API Management. Si no está creada, puedes encontrar una guía detallada sobre cómo crear una instancia de API Management usando el portal de Azure en este artículo: https://learn.microsoft.com/en-us/azure/api-management/get-started-create-service-instance
Paso 4: ir a APIs en el menú de la izquierda, debajo de Add API (Agregar API). Seleccionar Logic App desde Create from Azure resource (Crear desde recurso de Azure).
A continuación se abre el cuadro de diálogo para completar los detalles de la Logic App y de la API.
- Logic App: hacer clic en Browse (Examinar) y seleccionar la Logic App ya creada logic-http-mock-response.
- Nombre para mostrar: establecer APIM Demo API (API de demostración APIM).
- Nombre: esto se completará automáticamente según el nombre para mostrar. Mantenerlo como está.
- Sufijo de URL de la API: establecer como demo. Esto se agregará a la URL base para crear la URL completa de la API.
Una vez que se completan todos los detalles, debería verse así:
Si haces clic en Full (Completo) en el botón de alternancia en la parte superior, se mostrarán algunos campos más, pero por el momento se deben mantener los valores predeterminados.
Paso 5: hacer clic en Create (Crear), esto creará la API utilizando la Logic App logic-http-mock-response como back-end.
Paso 6: una vez creada la API, hacer clic en el botón editar en la sección Frontend para actualizar la ruta del recurso.
Paso 7: en la siguiente ventana, actualizar los detalles de la siguiente manera, lo que cambiará la ruta de recursos predeterminada proporcionada de acuerdo con nuestros requisitos. Luego hacer clic en Save (Guardar) para aplicar los cambios.
Se actualizará el nombre del recurso y su URL como en la siguiente imagen.
Configurar la suscripción de la API
Para ejecutar la API, se requiere una clave de suscripción. Se incluirá en la solicitud de API dentro del encabezado Ocp-Apim-Subscription-Key.
Paso 8: para crear la clave de suscripción en el administrador de la API, ve a Subscriptions (suscripciones) en el menú de la izquierda y luego el enlace Add subscription (añadir suscripción). Aquí crearemos una clave de suscripción solo para esta API. También se puede crear para todas las API o para un producto. Puedes encontrar más detalles acerca de las suscripciones API en el siguiente enlace: https://learn.microsoft.com/en-us/azure/api-management/api-management-subscriptions
Paso 9: en la ventana de New Subscription (nueva suscripción), rellenar los datos para crear una suscripción para la APIM Demo API (API de demostración APIM) y sus respectivas claves.
Una vez creada, copiar la clave principal para la suscripción Demo-Subscription, que se puede utilizar en la solicitud de API.
Ejecutar la API
Paso 10: para ejecutar la API, se necesita la URL de la API. Se puede encontrar en la pestaña Test (prueba) en la ventana de configuración de API.
Utiliza el mismo comando CURL utilizado para ejecutar la Logic App, pero con la URL anterior como la siguiente:
curl -X POST 'https://<APIM Host>/demo/mock-response'' \ --header 'Content-Type: application/json' \ --data '{"request": { {"name":" "Paul Stewart" }}'
Esto dará el siguiente error de autenticación:
{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
El motivo del error es que no hemos pasado ninguna clave de suscripción en la solicitud. Después agrega el encabezado de la clave de suscripción Ocp-Apim-Subscription-Key y el valor que hemos obtenido en la sección anterior.
curl -X POST 'https://<APIM Host>/demo/mock-response'' \ --header 'Content-Type: application/json' \ --header 'Ocp-Apim-Subscription-Key: <subscription key> \ --data '{"request": { {"name":" "Paul Stewart" }}'
Da la respuesta correcta, que es la misma que obtuvimos al llamar a la Logic App anteriormente, pero de una forma más segura a través del administrador de la API.
{"response":"Hello Paul Stewart"}
Restringir el acceso a la Logic App
Cuando el servicio de la Logic App se expone a través del administrador de la API con seguridad adicional, se debe deshabilitar el acceso directo a la misma. Entonces, la única forma de acceder al disparador del flujo de trabajo HTTP es a través del administrador de la API, que brinda más seguridad, control sobre el acceso y un monitoreo más sencillo de las solicitudes a través del administrador de la API.
Paso 11: para restringir el acceso a la Logic App, ir a la ventana de Workflow settings (Configuración de flujo de trabajo) y establecer la siguiente configuración en la sección Access control configuration (Configuración de control de acceso).
Opción de acceso al disparador – Rangos de IP específicos.
Rangos de IP para disparadores – Establecer la IP pública del administrador de la API. Esto se puede encontrar en la página de descripción general del administrador de API en Virtual IP (VIP) addresses (Direcciones IP virtuales). Configurar en el formato <public ip>/32
Una vez guardada, no se podrá acceder a la URL de la Logic App como antes y generará un error de acceso como el que se muestra a continuación:
{"error":{"code":"AuthorizationFailed","message":"The client IP address 'x.x.x.x' is not in the allowed caller IP address ranges specified in the workflow access control configuration."}}
Sin embargo, todavía es accesible a través de la API que exponemos en el administrador con la clave de suscripción correcta.
Conclusión
Azure Logic Apps se utiliza para implementar flujos de trabajo complejos que se pueden ejecutar a través de solicitudes HTTP. Para hacer que el servicio sea más seguro y manejable, el flujo de trabajo HTTP se puede exponer como una API REST en Azure API Management. Podemos usar las funciones de restricción de acceso en Azure Logic Apps para deshabilitar el acceso público al flujo de trabajo y permitirlo solo a través del administrador de la API.
Con Chakray como tu socio confiable de Azure, puedes desbloquear el potencial de tu negocio a través de nuestras implementaciones innovadoras adaptadas a tus necesidades específicas. Todo lo que necesitas es una asociación sólida con Chakray, que te guiará en cada paso del camino. Siéntete libre de contactarnos para cualquier consulta que no haya sido tratada en este artículo. ¡Estamos aquí para ayudarte!
Contacta con nuestro equipo y descubre las tecnologías de vanguardia que potenciarán tu negocio.¡Habla con nuestros expertos!