Configuración de la implementación de DevOps para flujos de trabajo de aplicaciones lógicas estándar en Azure Logic Apps de inquilino único

Se aplica a: Azure Logic Apps (estándar)

En este artículo se muestra cómo implementar un proyecto de aplicación lógica estándar en Azure Logic Apps de inquilino único desde Visual Studio Code a la infraestructura mediante herramientas y procesos de DevOps. En función de si prefiere GitHub o Azure DevOps para la implementación, elija la ruta de acceso y las herramientas que mejor funcionen para su escenario. Puede usar los ejemplos incluidos que contienen proyectos de aplicación lógica de ejemplo más los ejemplos de implementación de Azure mediante GitHub o Azure DevOps. Para más información sobre DevOps en el caso de un solo inquilino, consulte Introducción a la implementación de DevOps para Azure Logic Apps de inquilino único.

Requisitos previos

Implementación de recursos de infraestructura

Si aún no ha configurado un proyecto o infraestructura de aplicación lógica, puede usar los proyectos de ejemplo siguientes para implementar una aplicación y una infraestructura de ejemplo, en función de las opciones de origen e implementación que prefiera usar:

Ambos ejemplos incluyen los siguientes recursos que emplea una aplicación lógica para ejecutarse.

Nombre del recurso Requerido Descripción
Aplicación lógica (estándar) Yes Este recurso de Azure contiene los flujos de trabajo que se ejecutan en Azure Logic Apps de inquilino único.
Plan de hospedaje de App Service o Prémium de Functions Yes Este recurso de Azure especifica los recursos de hospedaje que se usarán para ejecutar la aplicación lógica, por ejemplo, proceso, procesamiento, almacenamiento, redes, etc.

Importante: En la experiencia actual, el recurso Aplicación lógica (estándar) requiere el plan de hospedaje Flujo de trabajo estándar, que se basa en el plan de hospedaje Prémium de Functions.

Cuenta de almacenamiento de Azure Sí, para flujos de trabajo con y sin estado Este recurso de Azure almacena los metadatos, las claves para el control de acceso, el estado, las entradas, las salidas, el historial de ejecución y otra información sobre los flujos de trabajo.
Application Insights Opcionales Este recurso de Azure proporciona funcionalidades de supervisión para los flujos de trabajo.
Conexiones de API Opcional, si no existe ninguno Estos recursos de Azure definen las conexiones de API administradas que los flujos de trabajo emplean para ejecutar operaciones de conector administrado, como Office 365, SharePoint, etc.

Importante: En el proyecto de aplicación lógica, el archivo connections.json contiene metadatos, puntos de conexión y claves para las conexiones de API administradas y las funciones de Azure que usan los flujos de trabajo. Para usar diferentes conexiones y funciones en cada entorno, asegúrese de parametrizar el archivo connections.json y actualizar los puntos de conexión.

Para más información, consulte Recursos de conexión de API y directivas de acceso.

Plantilla de Azure Resource Manager (ARM) Opcionales Este recurso de Azure define una implementación de infraestructura de línea de base que puede reutilizar o exportar.

Recursos de conexión de API y directivas de acceso

En Azure Logic Apps de inquilino único, todos los recursos de conexión de API o administrados de los flujos de trabajo requieren una directiva de acceso asociada. Esta directiva necesita la identidad de la aplicación lógica para proporcionar los permisos correctos para acceder a la infraestructura del conector administrado. Los proyectos de ejemplo incluidos incorporan una plantilla de ARM con todos los recursos de infraestructura necesarios, como estas directivas de acceso.

En el diagrama siguiente se muestran las dependencias entre el proyecto de aplicación lógica y los recursos de infraestructura:

Diagrama conceptual que muestra las dependencias de infraestructura de un proyecto de aplicación lógica en el modelo de Azure Logic Apps de inquilino único.

Implementación de recursos de aplicación lógica (implementación de archivos ZIP)

Después de insertar el proyecto de aplicación lógica en el repositorio de origen, puede configurar canalizaciones de compilación y versión dentro o fuera de Azure que implementen aplicaciones lógicas en la infraestructura.

Compilación del proyecto

Para configurar una canalización de compilación basada en el tipo de proyecto de aplicación lógica, realice las acciones correspondientes de la siguiente tabla:

Tipo de proyecto Descripción y pasos
Basado en NuGet La estructura del proyecto basado en NuGet se basa en .NET Framework. Para compilar estos proyectos, asegúrese de seguir los pasos de compilación de .NET Standard. Para más información, consulte la documentación de Creación de un paquete NuGet mediante MSBuild.
Basado en agrupación El proyecto de extensiones basado en agrupación no es específico del lenguaje y, por tanto, no requiere ningún paso de compilación específico de este. Puede usar cualquier método para comprimir los archivos del proyecto.

Importante: Asegúrese de que el archivo .zip contenga los artefactos de compilación reales, incluidas todas las carpetas de flujo de trabajo, los archivos de configuración como host.json, connections.json y cualquier otro archivo relacionado.

Antes del lanzamiento en Azure

Las conexiones de API administradas dentro del archivo connections.json del proyecto de aplicación lógica se crean específicamente para su uso local en Visual Studio Code. Antes de poder publicar los artefactos del proyecto de Visual Studio Code a Azure, debe actualizar estos artefactos. Para usar las conexiones de API administradas en Azure, debe actualizar sus métodos de autenticación para que tengan el formato correcto para usarlas en Azure.

Actualización del tipo de autenticación

Para cada conexión de API administrada que use la autenticación, debe actualizar el objeto de autenticación del formato local en Visual Studio Code al formato de Azure Portal, como se muestra en el primer y segundo ejemplo de código, respectivamente:

Formato de Visual Studio Code

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/westus/managedApis/sql"
      },
      "connection": {
         "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/ase/providers/Microsoft.Web/connections/sql-8"
      },
      "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
      "authentication": {
         "type": "Raw",
         "scheme": "Key",
         "parameter": "@appsetting('sql-connectionKey')"
      }
   }
}

Formato de Azure Portal

{
   "managedApiConnections": {
      "sql": {
         "api": {
            "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/westus/managedApis/sql"
      },
      "connection": {
         "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/resourceGroups/ase/providers/Microsoft.Web/connections/sql-8"
      },
      "connectionRuntimeUrl": "https://xxxxxxxxxxxxxx.01.common.logic-westus.azure-apihub.net/apim/sql/xxxxxxxxxxxxxxxxxxxxxxxxx/",
      "authentication": {
         "type": "ManagedServiceIdentity",
      }
   }
}

Creación de conexiones de API según sea necesario

Si va a implementar el flujo de trabajo de la aplicación lógica en una región o suscripción de Azure diferente del entorno de desarrollo local, también debe asegurarse de crear estas conexiones de API administradas antes de la implementación. La implementación de plantilla de Azure Resource Manager (plantilla de ARM) es la manera más fácil de crear conexiones de API administradas.

En el ejemplo siguiente se muestra una definición de recurso de conexión de API administrada de SQL en una plantilla de ARM:

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows", 
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

Para encontrar los valores que debe usar en el objeto properties para completar la definición del recurso de conexión, puede usar la siguiente API en un conector concreto:

GET https://management.azure.com/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/{connector-name}?api-version=2016-06-01

En la respuesta, busque el objeto connectionParameters, que contiene toda la información necesaria para completar la definición del recurso de ese conector en concreto. En el ejemplo siguiente se muestra una definición de recurso de ejemplo para una conexión administrada de SQL:

{
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016–06–01",
   "location": "[parameters('location')]",
   "name": "[parameters('connectionName')]",
   "properties": {
      "displayName": "sqltestconnector",
      "api": {
         "id": "/subscriptions/{Azure-subscription-ID}/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows",
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

Como alternativa, puede capturar y revisar el seguimiento de red al crear una conexión mediante el diseñador de flujo de trabajo en Azure Logic Apps. Busque la llamada PUT que se envía a la API administrada del conector como se ha descrito anteriormente y revise el cuerpo de la solicitud para ver si tiene toda la información necesaria.

Publicación en Azure

Para configurar una canalización de versión que se implemente en Azure, siga los pasos asociados de GitHub, Azure DevOps o la CLI de Azure.

Nota

Azure Logic Apps actualmente no admite ranuras de implementación de Azure.

En el caso de las implementaciones de GitHub, puede implementar la aplicación lógica mediante Acciones de GitHub, por ejemplo, las acciones de GitHub en Azure Functions. Esta acción requiere que recorra la siguiente información:

  • El nombre de la aplicación lógica que se usará para su implementación
  • El archivo zip que contiene los artefactos de compilación reales, incluidas todas las carpetas de flujo de trabajo, archivos de configuración como host.js, connections.jsy cualquier otro archivo relacionado.
  • El perfil de publicación que se usa para la autenticación.
- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
   app-name: 'MyLogicAppName'
   package: 'MyBuildArtifact.zip'
   publish-profile: 'MyLogicAppPublishProfile'

Para más información, revise la documentación Entrega continua mediante la acción de GitHub.

Después del lanzamiento en Azure

Cada conexión de API tiene directivas de acceso. Una vez completada la implementación del archivo ZIP, debe abrir el recurso de la aplicación lógica en Azure Portal y crear directivas de acceso para cada conexión de API a fin de configurar permisos para la aplicación lógica implementada. La implementación del archivo ZIP no crea la configuración de la aplicación. Por lo tanto, después de la implementación, debe crear esta configuración de la aplicación basada en el archivo local.settings.json en el proyecto de Visual Studio Code local.

Pasos siguientes

Además, nos gustaría conocer sus experiencias con Azure Logic Apps de inquilino único.