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
Un account Azure con una sottoscrizione attiva. Se non si ha una sottoscrizione di Azure, creare un account gratuito.
Un progetto di app per la logica Standard creato con Visual Studio Code e l'estensione App per la logica di Azure (Standard).
Se non è già stato configurato il progetto o l'infrastruttura dell'app per la logica, è possibile usare i progetti di esempio inclusi per distribuire un'app e un'infrastruttura di esempio, in base alle opzioni di origine e distribuzione che si preferisce usare. Per altre informazioni su questi progetti di esempio e sulle risorse incluse per eseguire l'app per la logica di esempio, vedere Distribuire l'infrastruttura.
Se si vuole eseguire la distribuzione in Azure, è necessaria una risorsa app per la logica (Standard) esistente creata in Azure. Per creare rapidamente una risorsa di app per la logica vuota, vedere Creare flussi di lavoro di app per la logica basati su tenant singolo - Portale.
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:
Esempio di GitHub per App per la logica di Azure a tenant singolo
Questo esempio include un progetto di app per la logica di esempio per App per la logica di Azure a tenant singolo, oltre ad esempi per la distribuzione di Azure e GitHub Actions.
Esempio di Azure DevOps per App per la logica di Azure a tenant singolo
Questo esempio include un progetto di app per la logica di esempio per App per la logica di Azure a tenant singolo, oltre ad esempi per la distribuzione di Azure e Azure Pipelines.
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) | Sì | 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 | Sì | 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:
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.
- Per i bug o i problemi, creare i problemi in GitHub.
- Per domande, richieste, commenti e altri commenti, usare questo modulo di feedback.