Compartir vía


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

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

Esta guía muestra principalmente cómo establecer la implementación de un proyecto de aplicación lógica estándar en Visual Studio Code en su infraestructura utilizando herramientas y procesos de DevOps. Si en cambio su aplicación lógica estándar existe en Azure Portal, puede descargar los archivos de artefactos de su aplicación lógica para usarlos en la implementación de DevOps. En función de si quiere usar GitHub o Azure DevOps, elegirá la ruta de acceso y las herramientas que mejor se adapten a su escenario de implementación.

Si no tiene una aplicación lógica estándar, aún puede seguir esta guía usando los proyectos de aplicación lógica estándar de ejemplo vinculados, además de ejemplos de implementación en Azure a través de GitHub o Azure DevOps. Para más información, revise Implementación general de DevOps para Azure Logic Apps de un solo inquilino.

Requisitos previos

Implementación de recursos de infraestructura

Para probar la experiencia de implementación de DevOps sin necesidad de configurar previamente la aplicación lógica estándar o la infraestructura, use los siguientes proyectos de ejemplo para poder configurar la implementación de un ejemplo de aplicación lógica estándar y la infraestructura, en función de si quiere usar GitHub o Azure DevOps:

Ambos ejemplos incluyen los siguientes recursos que una aplicación lógica estándar utiliza para ejecutarse:

Nombre del recurso Requerido Descripción
Aplicación lógica Estándar Este recurso de Azure contiene los flujos de trabajo que se ejecutan en Azure Logic Apps de inquilino único.

Importante: en el proyecto de su aplicación lógica, cada flujo de trabajo tiene un archivo workflow.json que contiene la definición del flujo de trabajo, que incluye las definiciones del desencadenador y de la acción.
Conexiones de API Sí, si existen conexiones de API 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.
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 de aplicación lógica estándar requiere el plan de hospedaje Flujo de trabajo estándar, que se basa en el plan de hospedaje de Azure Functions Premium.
Cuenta de Azure Storage 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.
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 un solo inquilino, cada recurso de conexión de API administrado en su flujo de trabajo requiere 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.

Por ejemplo, el siguiente diagrama muestra las dependencias entre un proyecto de aplicación lógica estándar y los recursos de infraestructura:

El diagrama conceptual muestra las dependencias de infraestructura para el proyecto de aplicación lógica estándar en el modelo de Azure Logic Apps de inquilino único.

Descargue los artefactos de la aplicación lógica estándar desde el portal

Si su aplicación lógica estándar se encuentra en Azure Portal, puede descargar un archivo zip que contiene los archivos de artefactos de su aplicación lógica, incluidos workflow.json, connections.json, host.json y local.settings.json.

  1. En Azure Portal, busque y abra el recurso aplicación lógica estándar.

  2. En el menú de la aplicación lógica, seleccione Información general.

  3. En la barra de herramientas de Información general, seleccione Descargar el contenido de la aplicación. En el cuadro de confirmación que aparece, seleccione Descargar.

  4. Cuando aparezca la solicitud, seleccione Guardar como, busque la carpeta local que quiera y seleccione Guardar para guardar el archivo zip.

  5. Extraiga el archivo .zip.

  6. En Visual Studio Code, abra la carpeta que contiene los archivos descomprimidos.

    Al abrir la carpeta, Visual Studio Code crea automáticamente un área de trabajo.

  7. Edite el contenido de la carpeta para incluir solo las carpetas y archivos necesarios para la implementación usando DevOps.

  8. Cuando termine, guarde los cambios.

Compilación e implementación de una aplicación lógica (implementación zip)

Puede configurar canalizaciones de compilación y lanzamiento dentro o fuera de Azure que implementen aplicaciones lógicas estándar en su infraestructura.

Compilación del proyecto

  1. Envíe el proyecto y los archivos de artefactos de su aplicación lógica estándar a su repositorio de origen, por ejemplo, GitHub o Azure DevOps.

  2. Establezca una canalización de compilación basada en el tipo de proyecto de su aplicación lógica escribiendo las siguientes acciones correspondientes:

    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.
  3. Comprima los archivos de su proyecto usando el método que quiera.

    Importante

    Asegúrese de que su archivo zip contiene los artefactos de compilación reales de su proyecto en el nivel raíz, incluidas todas las carpetas de flujo de trabajo, archivos de configuración como host.json, connections.json, local.settings.json y cualquier otro archivo relacionado. No agregue carpetas adicionales ni coloque ningún artefacto en carpetas que no existan en la estructura del proyecto.

    Por ejemplo, la siguiente lista muestra un ejemplo de estructura de archivos MyBuildArtifacts.zip:

    MyStatefulWorkflow1-Folder
    MyStatefulWorkflow2-Folder
    connections.json
    host.json
    local.settings.json
    

Antes de publicar 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 authentication 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/westus/managedApis/sql"
         },
         "connection": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
         },
         "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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/westus/managedApis/sql"
         },
         "connection": {
            "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/ase/providers/Microsoft.Web/connections/sql-2"
         },
         "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 su aplicación lógica estándar 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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/providers/Microsoft.Web/locations/{Azure-region-location}/managedApis/sql"
      },
      "parameterValues": {
         "authType": "windows", 
         "database": "TestDB",
         "password": "TestPassword",
         "server": "TestServer",
         "username": "TestUserName"
      }
   }
}

Para encontrar los valores necesarios para el objeto properties y poder finalizar la definición del recurso de conexión, use la siguiente API para un conector específico:

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 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 a PUT que se envía a la API del conector administrado como se ha descrito anteriormente y revise el cuerpo de la solicitud para obtener toda la información necesaria.

Definición de recursos de puerta de enlace de datos local

Si la conexión usa un recurso de puerta de enlace de datos local, esta definición de recurso existe de manera independiente con respecto a la definición de recursos del conector. Para ver la definición de recursos de la puerta de enlace de datos, consulte Automatización de la implementación para Azure Logic Apps mediante plantillas de Azure Resource Manager y Microsoft.Web connectionGateways.

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.

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 sus artefactos de compilación reales, incluidas todas las carpetas de flujo de trabajo, archivos de configuración como host.json, connections.json, local.settings.json y 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 Entrega continua usando la Acción de GitHub.

Después de la implementación en Azure

Cada conexión de API tiene directivas de acceso. Una vez completada la implementación mediante zip, debe abrir su recurso de aplicación lógica estándar en Azure Portal y crear directivas de acceso para cada conexión de API con el fin de configurar los permisos para la aplicación lógica implementada. La implementación del archivo ZIP no crea la configuración de la aplicación. Tras la implementación, deberá crear esta configuración de la aplicación basándose en el archivo local.settings.json de su proyecto de aplicación lógica.

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