Share via


Configurare la distribuzione DevOps per i flussi di lavoro delle app per la logica Standard in App per la logica di Azure a tenant singolo

Si applica a: App per la logica di Azure (standard)

Questo articolo illustra come distribuire un progetto di app per la logica Standard in App per la logica di Azure a tenant singolo da Visual Studio Code all'infrastruttura usando strumenti e processi DevOps. A seconda che si preferisca GitHub o Azure DevOps per la distribuzione, scegliere il percorso e gli strumenti più adatti per lo scenario. È possibile usare gli esempi inclusi che contengono progetti di app per la logica di esempio e esempi per la distribuzione di Azure usando GitHub o Azure DevOps. Per altre informazioni su DevOps per un tenant singolo, vedere La panoramica della distribuzione di DevOps per App per la logica di Azure a tenant singolo.

Prerequisiti

Distribuire le risorse dell'infrastruttura

Se non è già stato configurato un progetto o un'infrastruttura di app per la logica, è possibile usare i progetti di esempio seguenti per distribuire un'app e un'infrastruttura di esempio, in base alle opzioni di origine e distribuzione che si preferisce usare:

Entrambi gli esempi includono le risorse seguenti usate da un'app per la logica per l'esecuzione.

Nome risorsa Obbligatoria Descrizione
App per la logica (standard) Questa risorsa di Azure contiene i flussi di lavoro eseguiti in App per la logica di Azure a tenant singolo.
Funzioni Premium o servizio app piano di hosting Questa risorsa di Azure specifica le risorse di hosting da usare per l'esecuzione dell'app per la logica, ad esempio calcolo, elaborazione, archiviazione, rete e così via.

Importante: nell'esperienza corrente, la risorsa App per la logica (Standard) richiede il piano di hosting Workflow Standard, basato sul piano di hosting Functions Premium.

Account di archiviazione di Azure Sì, sia per i flussi di lavoro con stato che per i flussi di lavoro senza stato Questa risorsa di Azure archivia i metadati, le chiavi per il controllo di accesso, lo stato, gli input, gli output, la cronologia di esecuzione e altre informazioni sui flussi di lavoro.
Application Insights Facoltativo Questa risorsa di Azure offre funzionalità di monitoraggio per i flussi di lavoro.
Connessioni API Facoltativo, se non esistente Queste risorse di Azure definiscono tutte le connessioni API gestite usate dai flussi di lavoro per eseguire operazioni del connettore gestito, ad esempio Office 365, SharePoint e così via.

Importante: nel progetto dell'app per la logica il file connections.json contiene metadati, endpoint e chiavi per qualsiasi connessione API gestita e funzioni di Azure usate dai flussi di lavoro. Per usare connessioni e funzioni diverse in ogni ambiente, assicurarsi di parametrizzare il file connections.json e aggiornare gli endpoint.

Per altre informazioni, vedere Risorse di connessione API e criteri di accesso.

Modello di Azure Resource Manager Facoltativo Questa risorsa di Azure definisce una distribuzione dell'infrastruttura di base che è possibile riutilizzare o esportare.

Risorse di connessione API e criteri di accesso

In App per la logica di Azure a tenant singolo ogni risorsa di connessione api o gestita nei flussi di lavoro richiede criteri di accesso associati. Questo criterio richiede l'identità dell'app per la logica per fornire le autorizzazioni corrette per l'accesso all'infrastruttura del connettore gestito. I progetti di esempio inclusi includono un modello di Resource Manager che include tutte le risorse dell'infrastruttura necessarie, inclusi questi criteri di accesso.

Il diagramma seguente illustra le dipendenze tra il progetto dell'app per la logica e le risorse dell'infrastruttura:

Diagramma concettuale che mostra le dipendenze dell'infrastruttura per un progetto di app per la logica nel modello app per la logica di Azure a tenant singolo.

Distribuire le risorse dell'app per la logica (distribuzione zip)

Dopo aver eseguito il push del progetto dell'app per la logica nel repository di origine, è possibile configurare pipeline di compilazione e versione all'interno o all'esterno di Azure che distribuiscono le app per la logica nell'infrastruttura.

Compilare il progetto

Per configurare una pipeline di compilazione in base al tipo di progetto dell'app per la logica, completare le azioni corrispondenti nella tabella seguente:

Tipo di progetto Descrizione e passaggi
Basato su Nuget La struttura del progetto basata su NuGet è basata su .NET Framework. Per compilare questi progetti, assicurarsi di seguire la procedura di compilazione per .NET Standard. Per altre informazioni, vedere la documentazione relativa alla creazione di un pacchetto NuGet con MSBuild.
Basato su bundle Il progetto basato su bundle di estensione non è specifico del linguaggio e non richiede passaggi di compilazione specifici del linguaggio. È possibile usare qualsiasi metodo per comprimere i file di progetto.

Importante: assicurarsi che il file di .zip contenga gli artefatti di compilazione effettivi, incluse tutte le cartelle del flusso di lavoro, i file di configurazione, ad esempio host.json, connections.json e tutti gli altri file correlati.

Prima del rilascio in Azure

Le connessioni API gestite all'interno del file connections.json del progetto dell'app per la logica vengono create in modo specifico per l'uso locale in Visual Studio Code. Prima di rilasciare gli artefatti del progetto da Visual Studio Code ad Azure, è necessario aggiornare questi artefatti. Per usare le connessioni API gestite in Azure, è necessario aggiornare i metodi di autenticazione in modo che siano nel formato corretto da usare in Azure.

Aggiornare il tipo di autenticazione

Per ogni connessione API gestita che usa l'autenticazione, è necessario aggiornare l'oggetto di autenticazione dal formato locale in Visual Studio Code al formato portale di Azure, come illustrato rispettivamente dai primi e dai secondi esempi di codice:

Formato di 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 portale di 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",
      }
   }
}

Creare connessioni API in base alle esigenze

Se si distribuisce il flusso di lavoro dell'app per la logica in un'area di Azure o in una sottoscrizione diversa dall'ambiente di sviluppo locale, è necessario assicurarsi anche di creare queste connessioni API gestite prima della distribuzione. La distribuzione del modello di Resource Manager di Azure è il modo più semplice per creare connessioni API gestite.

L'esempio seguente illustra una definizione di risorsa di connessione API gestita di SQL in un modello di Resource Manager:

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

Per trovare i valori da usare nell'oggetto proprietà per completare la definizione della risorsa di connessione, è possibile usare l'API seguente per un connettore specifico:

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

Nella risposta trovare l'oggetto connectionParameters , che contiene tutte le informazioni necessarie per completare la definizione di risorsa per tale connettore specifico. L'esempio seguente mostra una definizione di risorsa di esempio per una connessione gestita di 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"
      }
   }
}

In alternativa, è possibile acquisire ed esaminare la traccia di rete per quando si crea una connessione usando la finestra di progettazione del flusso di lavoro in App per la logica di Azure. Trovare la PUT chiamata inviata all'API gestita del connettore come descritto in precedenza ed esaminare il corpo della richiesta per tutte le informazioni necessarie.

Rilasciare in Azure

Per configurare una pipeline di versione distribuita in Azure, seguire la procedura associata per GitHub, Azure DevOps o l'interfaccia della riga di comando di Azure.

Nota

App per la logica di Azure attualmente non supporta gli slot di distribuzione di Azure.

Per le distribuzioni di GitHub, è possibile distribuire l'app per la logica usando GitHub Actions, ad esempio il GitHub Actions in Funzioni di Azure. Per questa azione è necessario passare le informazioni seguenti:

  • Nome dell'app per la logica da usare per la distribuzione
  • File ZIP contenente gli artefatti di compilazione effettivi, incluse tutte le cartelle del flusso di lavoro, i file di configurazione, ad esempio host.json, connections.json e qualsiasi altro file correlato.
  • Profilo di pubblicazione, usato per l'autenticazione
- name: 'Run Azure Functions Action'
  uses: Azure/functions-action@v1
  id: fa
  with:
   app-name: 'MyLogicAppName'
   package: 'MyBuildArtifact.zip'
   publish-profile: 'MyLogicAppPublishProfile'

Per altre informazioni, vedere la documentazione relativa al recapito continuo tramite GitHub Action .

Dopo il rilascio in Azure

Ogni connessione API ha criteri di accesso. Al termine della distribuzione zip, è necessario aprire la risorsa dell'app per la logica nel portale di Azure e creare criteri di accesso per ogni connessione API per configurare le autorizzazioni per l'app per la logica distribuita. La distribuzione zip non crea automaticamente le impostazioni dell'app. Quindi, dopo la distribuzione, è necessario creare queste impostazioni dell'app in base al file local.settings.json nel progetto di Visual Studio Code locale.

Passaggi successivi

È consigliabile conoscere le esperienze con App per la logica di Azure a tenant singolo.