Condividi tramite


Configurare la distribuzione di DevOps per le app per la logica Standard in App per la logica di Azure a tenant singolo

Si applica: App per la logica di Azure (Standard)

Questa guida illustra principalmente come configurare la distribuzione per un progetto di app per la logica Standard in Visual Studio Code nell'infrastruttura usando strumenti e processi DevOps. Se invece l'app per la logica Standard esiste nella portale di Azure, è possibile scaricare i file di artefatti dell'app per la logica da usare con la distribuzione DevOps. In base al fatto che si voglia usare GitHub o Azure DevOps, è possibile scegliere il percorso e gli strumenti più adatti per lo scenario di distribuzione.

Se non si ha un'app per la logica Standard, è comunque possibile seguire questa guida usando i progetti di app per la logica Standard di esempio collegati e esempi per la distribuzione in Azure tramite GitHub o Azure DevOps. Per altre informazioni, vedere Panoramica della distribuzione di DevOps per App per la logica di Azure a tenant singolo.

Prerequisiti

Distribuire le risorse dell'infrastruttura

Per provare l'esperienza di distribuzione DevOps senza la configurazione precedente dell'infrastruttura o dell'app per la logica Standard, usare i progetti di esempio seguenti per configurare la distribuzione per un'app per la logica e un'infrastruttura Standard, in base al fatto che si voglia usare GitHub o Azure DevOps:

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

Nome risorsa Obbligatorio 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.

Importante: nel progetto dell'app per la logica ogni flusso di lavoro ha un file workflow.json che contiene la definizione del flusso di lavoro, che include le definizioni di trigger e azione.
Connessioni API Sì, se esistono connessioni API 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.
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 dell'app per la logica Standard richiede il piano di hosting Standard del flusso di lavoro, basato sul piano di hosting Funzioni di Azure 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.
Modello di Azure Resource Manager (modello di ARM) 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

Nei App per la logica di Azure a tenant singolo ogni risorsa di connessione API gestita nel flusso 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.

Ad esempio, il diagramma seguente mostra le dipendenze tra un progetto di app per la logica Standard e le risorse dell'infrastruttura:

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

Scaricare gli artefatti dell'app per la logica Standard dal portale

Se l'app per la logica Standard si trova nel portale di Azure, è possibile scaricare un file ZIP contenente i file di artefatti dell'app per la logica, tra cui workflow.json, connections.json, host.json e local.settings.json.

  1. Nel portale di Azure, individuare e aprire la risorsa app per la logica Standard.

  2. Selezionare Panoramica nel menu dell'App per la logica.

  3. Sulla barra degli strumenti Panoramica selezionare Scarica contenuto dell'app. Nella casella di conferma visualizzata selezionare Scarica.

  4. Quando viene visualizzata la richiesta, selezionare Salva con nome, passare alla cartella locale desiderata e selezionare Salva per salvare il file ZIP.

  5. Estrai il file zip.

  6. In Visual Studio Code aprire la cartella contenente i file decompressi.

    Quando si apre la cartella, Visual Studio Code crea automaticamente un'area di lavoro.

  7. Modificare il contenuto della cartella in modo da includere solo le cartelle e i file necessari per la distribuzione con DevOps.

  8. Al termine, salvare le modifiche.

Compilare e distribuire l'app per la logica (distribuzione zip)

È possibile configurare pipeline di compilazione e versione all'interno o all'esterno di Azure che distribuiscono app per la logica Standard nell'infrastruttura.

Compilare il progetto

  1. Eseguire il push dei file di progetto e artefatto dell'app per la logica Standard nel repository di origine, ad esempio GitHub o Azure DevOps.

  2. Configurare una pipeline di compilazione in base al tipo di progetto dell'app per la logica completando le azioni corrispondenti seguenti:

    Tipo progetto Descrizione e passaggi
    Basato su Nuget La struttura del progetto basata su NuGet si basa su .NET Framework. Per compilare questi progetti, assicurarsi di seguire i passaggi 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 della lingua e non richiede alcuna procedura di compilazione specifica del linguaggio.
  3. Comprimere i file di progetto usando qualsiasi metodo desiderato.

    Importante

    Assicurarsi che il file ZIP contenga gli artefatti di compilazione effettivi del progetto a livello radice, incluse tutte le cartelle del flusso di lavoro, i file di configurazione, ad esempio host.json, connections.json, local.settings.json e qualsiasi altro file correlato. Non aggiungere cartelle aggiuntive né inserire elementi in cartelle che non esistono già nella struttura del progetto.

    Ad esempio, l'elenco seguente mostra un esempio MyBuildArtifacts.zip struttura di file:

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

Prima del rilascio in Azure

Le connessioni API gestite all'interno del file di connections.json del progetto dell'app per la logica vengono create in modo specifico per l'uso locale in Visual Studio Code. Prima di poter 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 authentication 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/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 portale di Azure

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

Creare connessioni API in base alle esigenze

Se si distribuisce l'app per la logica Standard in un'area di Azure o in una sottoscrizione diversa dall'ambiente di sviluppo locale, è anche necessario assicurarsi di creare queste connessioni API gestite prima della distribuzione. La distribuzione del modello di Azure Resource Manager è 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/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"
      }
   }
}

Per trovare i valori necessari per l'oggetto properties in modo che sia possibile completare la definizione della risorsa di connessione, 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 le informazioni necessarie per completare la definizione della risorsa per tale connettore specifico. L'esempio seguente illustra 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 del connettore gestito come descritto in precedenza ed esaminare il corpo della richiesta per tutte le informazioni necessarie.

Definizione di risorsa del gateway dati locale

Se la connessione usa una risorsa gateway dati locale, questa definizione di risorsa esiste separatamente dalla definizione della risorsa del connettore. Per visualizzare la definizione di risorsa del gateway dati, vedere Automatizzare la distribuzione per App per la logica di Azure usando i modelli di Azure Resource Manager e Microsoft.Web connectionGateways.

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.

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

  • Nome dell'app per la logica da usare per la distribuzione
  • File ZIP che contiene gli artefatti di compilazione effettivi, incluse tutte le cartelle del flusso di lavoro, i file di configurazione, ad esempio host.json, connections.json, local.settings.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 Recapito continuo con GitHub Action.

Dopo la distribuzione in Azure

Ogni connessione API ha criteri di accesso. Al termine della distribuzione ZIP, è necessario aprire la risorsa dell'app per la logica Standard nella 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. Dopo la distribuzione, è necessario creare queste impostazioni dell'app in base al file local.settings.json nel progetto dell'app per la logica.

Vorremmo ascoltare le vostre esperienze con l'App per la logica di Azure a tenant singolo.