Configurar a implementação do DevOps para fluxos de trabalho de aplicações lógicas Standard no Azure Logic Apps de inquilino único

Aplica-se a: Azure Logic Apps (Standard)

Este artigo mostra como implementar um projeto de aplicação lógica Standard no Azure Logic Apps de inquilino único a partir do Visual Studio Code para a sua infraestrutura com ferramentas e processos de DevOps. Com base no facto de preferir o GitHub ou o Azure DevOps para implementação, escolha o caminho e as ferramentas que funcionam melhor para o seu cenário. Pode utilizar os exemplos incluídos que contêm projetos de aplicações lógicas de exemplo e exemplos de implementação do Azure com o GitHub ou o Azure DevOps. Para obter mais informações sobre o DevOps para inquilino único, veja Descrição geral da implementação do DevOps para o Azure Logic Apps de inquilino único.

Pré-requisitos

Implementar recursos de infraestrutura

Se ainda não tiver configurado um projeto ou infraestrutura de aplicação lógica, pode utilizar os seguintes projetos de exemplo para implementar uma aplicação e infraestrutura de exemplo, com base nas opções de origem e implementação que prefere utilizar:

Ambos os exemplos incluem os seguintes recursos que uma aplicação lógica utiliza para executar.

Nome do recurso Necessário Descrição
Aplicação Lógica (Standard) Sim Este recurso do Azure contém os fluxos de trabalho que são executados no Azure Logic Apps de inquilino único.
Funções Premium ou Serviço de Aplicações plano de alojamento Sim Este recurso do Azure especifica os recursos de alojamento a utilizar para executar a sua aplicação lógica, como computação, processamento, armazenamento, redes, etc.

Importante: na experiência atual, o recurso da Aplicação Lógica (Standard) requer o plano de alojamento Padrão do Fluxo de Trabalho, que se baseia no plano de alojamento Das Funções Premium.

Conta de armazenamento do Azure Sim, para fluxos de trabalho com monitorização de estado e sem estado Este recurso do Azure armazena os metadados, chaves para controlo de acesso, estado, entradas, saídas, histórico de execuções e outras informações sobre os fluxos de trabalho.
Application Insights Opcional Este recurso do Azure fornece capacidades de monitorização para os seus fluxos de trabalho.
Ligações de API Opcional, se não existir nenhuma Estes recursos do Azure definem quaisquer ligações de API geridas que os seus fluxos de trabalho utilizam para executar operações de conectores geridos, como Office 365, SharePoint, etc.

Importante: no projeto da aplicação lógica, o ficheiro connections.json contém metadados, pontos finais e chaves para quaisquer ligações de API geridas e funções do Azure utilizadas pelos fluxos de trabalho. Para utilizar diferentes ligações e funções em cada ambiente, certifique-se de que parametriza o ficheiro connections.json e atualiza os pontos finais.

Para obter mais informações, veja Recursos de ligação à API e políticas de acesso.

Modelo do Azure Resource Manager (ARM) Opcional Este recurso do Azure define uma implementação de infraestrutura de linha de base que pode reutilizar ou exportar.

Recursos de ligação à API e políticas de acesso

No Azure Logic Apps de inquilino único, todos os recursos de ligação geridos ou de API nos seus fluxos de trabalho necessitam de uma política de acesso associada. Esta política precisa da identidade da sua aplicação lógica para fornecer as permissões corretas para aceder à infraestrutura do conector gerido. Os projetos de exemplo incluídos incluem um modelo do ARM que inclui todos os recursos de infraestrutura necessários, incluindo estas políticas de acesso.

O diagrama seguinte mostra as dependências entre o projeto da aplicação lógica e os recursos de infraestrutura:

Diagrama conceptual que mostra as dependências de infraestrutura de um projeto de aplicação lógica no modelo do Azure Logic Apps de inquilino único.

Implementar recursos de aplicações lógicas (implementação zip)

Depois de enviar o projeto da aplicação lógica para o repositório de origem, pode configurar pipelines de compilação e versão dentro ou fora do Azure que implementam aplicações lógicas na infraestrutura.

Criar o seu projeto

Para configurar um pipeline de compilação com base no tipo de projeto da aplicação lógica, conclua as ações correspondentes na tabela seguinte:

Tipo de projeto Descrição e passos
Baseado em Nuget A estrutura do projeto baseado em NuGet baseia-se no .NET Framework. Para criar estes projetos, certifique-se de que segue os passos de compilação do .NET Standard. Para obter mais informações, veja a documentação para Criar um pacote NuGet com o MSBuild.
Baseado em pacotes O projeto baseado em pacotes de extensões não é específico da linguagem e não requer passos de compilação específicos de linguagem. Pode utilizar qualquer método para zipar os ficheiros do projeto.

Importante: certifique-se de que o ficheiro .zip contém os artefactos de compilação reais, incluindo todas as pastas de fluxo de trabalho, ficheiros de configuração como host.json, connections.json e quaisquer outros ficheiros relacionados.

Antes da versão para o Azure

As ligações de API geridas no ficheiro connections.json do projeto de aplicação lógica são criadas especificamente para utilização local no Visual Studio Code. Antes de poder lançar os artefactos do projeto do Visual Studio Code para o Azure, tem de atualizar estes artefactos. Para utilizar as ligações de API geridas no Azure, tem de atualizar os respetivos métodos de autenticação para que estejam no formato correto a utilizar no Azure.

Atualizar tipo de autenticação

Para cada ligação de API gerida que utiliza a autenticação, tem de atualizar o objeto de autenticação do formato local no Visual Studio Code para o formato portal do Azure, conforme mostrado pelo primeiro e segundo exemplos de código, respetivamente:

Formato do 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 portal do Azure

{
   "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",
      }
   }
}

Criar ligações de API conforme necessário

Se estiver a implementar o fluxo de trabalho da aplicação lógica numa região ou subscrição do Azure diferente do ambiente de desenvolvimento local, também tem de se certificar de que cria estas ligações de API geridas antes da implementação. A implementação do modelo do Azure Resource Manager (modelo arm) é a forma mais fácil de criar ligações de API geridas.

O exemplo seguinte mostra uma definição de recurso de ligação da API gerida do SQL num modelo do 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 localizar os valores que precisa de utilizar no objeto de propriedades para concluir a definição do recurso de ligação, pode utilizar a seguinte API para um 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

Na resposta, localize o objeto connectionParameters , que contém todas as informações necessárias para concluir a definição de recursos para esse conector específico. O exemplo seguinte mostra uma definição de recurso de exemplo para uma ligação gerida pelo 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, pode capturar e rever o rastreio de rede para quando criar uma ligação com o estruturador de fluxos de trabalho no Azure Logic Apps. Localize a PUT chamada que é enviada para a API gerida do conector, conforme descrito anteriormente, e reveja o corpo do pedido para obter todas as informações necessárias.

Lançar para o Azure

Para configurar um pipeline de versão que é implementado no Azure, siga os passos associados para o GitHub, o Azure DevOps ou a CLI do Azure.

Nota

Atualmente, o Azure Logic Apps não suporta blocos de implementação do Azure.

Para implementações do GitHub, pode implementar a sua aplicação lógica com GitHub Actions, por exemplo, o GitHub Actions no Funções do Azure. Esta ação requer que transmita as seguintes informações:

  • O nome da aplicação lógica a utilizar para implementação
  • O ficheiro zip que contém os artefactos de compilação reais, incluindo todas as pastas de fluxo de trabalho, ficheiros de configuração como host.json, connections.json e quaisquer outros ficheiros relacionados.
  • O seu perfil de publicação, que é utilizado para autenticação
- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
   app-name: 'MyLogicAppName'
   package: 'MyBuildArtifact.zip'
   publish-profile: 'MyLogicAppPublishProfile'

Para obter mais informações, veja a documentação Entrega contínua com o GitHub Action .

Após o lançamento para o Azure

Cada ligação à API tem políticas de acesso. Após a conclusão da implementação zip, tem de abrir o recurso da aplicação lógica no portal do Azure e criar políticas de acesso para cada ligação à API para configurar permissões para a aplicação lógica implementada. A implementação zip não cria definições de aplicação para si. Assim, após a implementação, tem de criar estas definições de aplicação com base no ficheiro local.settings.json no seu projeto local do Visual Studio Code.

Passos seguintes

Gostaríamos de saber mais sobre as suas experiências com o Azure Logic Apps de inquilino único!