Condividi tramite


Panoramica Automatizzare la distribuzione per App per la logica di Azure usando i modelli di Azure Resource Manager

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

Quando si è pronti per automatizzare la creazione e la distribuzione dell'app per la logica, è possibile espandere la definizione del flusso di lavoro sottostante dell'app per la logica in un modello di Azure Resource Manager. Questo modello definisce l'infrastruttura, le risorse, i parametri e altre informazioni per il provisioning e la distribuzione dell'app per la logica. Definendo i parametri per i valori che variano in fase di distribuzione, noto anche come parametrizzazione, è possibile distribuire ripetutamente e in modo coerente le app per la logica in base a esigenze di distribuzione diverse.

Ad esempio, se si esegue la distribuzione in ambienti per lo sviluppo, il test e la produzione, è probabile che si usino stringa di connessione diversi per ogni ambiente. È possibile dichiarare i parametri del modello che accettano stringa di connessione diversi e quindi archiviare tali stringhe in un file di parametri separato. In questo modo, è possibile modificare tali valori senza dover aggiornare e ridistribuire il modello. Per gli scenari in cui sono presenti valori di parametro sensibili o che devono essere protetti, ad esempio password e segreti, è possibile archiviare tali valori in Azure Key Vault e recuperare tali valori nel file dei parametri. In questi scenari, tuttavia, si ridistribuirà per recuperare i valori correnti.

Questa panoramica descrive gli attributi in un modello di Resource Manager che include una definizione del flusso di lavoro dell'app per la logica. Sia il modello che la definizione del flusso di lavoro usano la sintassi JSON, ma esistono alcune differenze perché la definizione del flusso di lavoro segue anche lo schema del linguaggio di definizione del flusso di lavoro. Ad esempio, le espressioni modello e le espressioni di definizione del flusso di lavoro differiscono in base al modo in cui fanno riferimento ai parametri e ai valori che possono accettare.

Suggerimento

Per il modo più semplice per ottenere un modello di app per la logica con parametri valido pronto per la distribuzione, usare Visual Studio (edizione community gratuita o versione successiva) e gli strumenti di App per la logica di Azure per Visual Studio. È quindi possibile creare l'app per la logica in Visual Studio oppure trovare e scaricare un'app per la logica esistente da Azure in Visual Studio.

In alternativa, è possibile creare modelli di app per la logica usando Azure PowerShell con il modulo LogicAppTemplate.

L'app per la logica di esempio in questo argomento usa un trigger di Outlook di Office 365 che viene attivato quando arriva un nuovo messaggio di posta elettronica e un'azione Archiviazione BLOB di Azure che crea un BLOB per il corpo del messaggio di posta elettronica e carica tale BLOB in un contenitore di archiviazione di Azure. Gli esempi illustrano anche come parametrizzare i valori che variano in fase di distribuzione.

Per altre informazioni sui modelli di Resource Manager, vedere gli argomenti seguenti:

Per informazioni sulle risorse modello specifiche per le app per la logica, gli account di integrazione, gli artefatti dell'account di integrazione e gli ambienti del servizio di integrazione, vedere Tipi di risorse Microsoft.Logic.

Per i modelli di app per la logica di esempio, vedere questi esempi:

  • Modello completo usato per gli esempi di questo argomento
  • Modello di app per la logica di avvio rapido di esempio in GitHub

Per l'API REST di App per la logica, iniziare con la panoramica dell'API REST App per la logica di Azure.

Struttura del modello

Al livello superiore, un modello di Resource Manager segue questa struttura, descritta in modo completo nell'argomento relativo alla sintassi e alla struttura dei modelli di Azure Resource Manager:

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {},
   "variables": {},
   "functions": [],
   "resources": [],
   "outputs": {}
}

Per un modello di app per la logica, si lavora principalmente con questi oggetti modello:

Attributo Descrizione
parameters Dichiara i parametri del modello per accettare i valori da usare durante la creazione e la personalizzazione delle risorse per la distribuzione in Azure. Ad esempio, questi parametri accettano i valori per il nome e la posizione dell'app per la logica, le connessioni e altre risorse necessarie per la distribuzione. È possibile archiviare questi valori di parametro in un file di parametri, descritto più avanti in questo argomento. Per informazioni generali, vedere Parametri - Struttura e sintassi dei modelli di Resource Manager.
resources Definisce le risorse per creare o aggiornare e distribuire in un gruppo di risorse di Azure, ad esempio l'app per la logica, le connessioni, gli account di archiviazione di Azure e così via. Per informazioni generali, vedere Risorse - Struttura e sintassi dei modelli di Resource Manager.

Il modello di app per la logica usa questo formato di nome file:

<logic-app-name>.json

Importante

La sintassi del modello fa distinzione tra maiuscole e minuscole, quindi assicurarsi di usare maiuscole e minuscole coerenti.

Parametri del modello

Un modello di app per la logica include più parameters oggetti che esistono a livelli diversi ed eseguono funzioni diverse. Ad esempio, al livello superiore, è possibile dichiarare i parametri del modello per i valori da accettare e usare durante la distribuzione durante la creazione e la distribuzione di risorse in Azure, ad esempio:

  • App per la logica

  • Connessioni usate dall'app per la logica per accedere ad altri servizi e sistemi tramite connettori gestiti

  • Altre risorse necessarie per la distribuzione dell'app per la logica

    Ad esempio, se l'app per la logica usa un account di integrazione per scenari business-to-business (B2B), l'oggetto di primo livello parameters del modello dichiara il parametro che accetta l'ID risorsa per tale account di integrazione.

Ecco la struttura generale e la sintassi per una definizione di parametro, descritta in modo completo da Parametri - Struttura e sintassi del modello di Resource Manager:

"<parameter-name>": {
   "type": "<parameter-type>",
   "defaultValue": <default-parameter-value>,
   <other-parameter-attributes>,
   "metadata": {
      "description": "<parameter-description>"
   }
},

Questo esempio mostra solo i parametri del modello per i valori usati per creare e distribuire queste risorse in Azure:

  • Nome e posizione per l'app per la logica
  • ID da usare per un account di integrazione collegato all'app per la logica
{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   // Template parameters
   "parameters": {
      "LogicAppName": {
         "type": "string",
         "minLength": 1,
         "maxLength": 80,
         "defaultValue": "MyLogicApp",
         "metadata": {
            "description": "The resource name for the logic app"
         }
      },
      "LogicAppLocation": {
         "type": "string",
         "minLength": 1,
         "defaultValue": "[resourceGroup().location]",
         "metadata": {
            "description": "The resource location for the logic app"
         }
      },
      "LogicAppIntegrationAccount": {
         "type":"string",
         "minLength": 1,
         "defaultValue": "/subscriptions/<Azure-subscription-ID>/resourceGroups/fabrikam-integration-account-rg/providers/Microsoft.Logic/integrationAccounts/fabrikam-integration-account",
         "metadata": {
            "description": "The ID to use for the integration account"
         }
      }
   },
   "variables": {},
   "functions": [],
   "resources": [],
   "outputs": {}
}

Ad eccezione dei parametri che gestiscono valori sensibili o che devono essere protetti, ad esempio nomi utente, password e segreti, tutti questi parametri includono defaultValue attributi, anche se in alcuni casi i valori predefiniti sono valori vuoti. I valori di distribuzione da usare per questi parametri di modello vengono forniti dal file di parametri di esempio descritto più avanti in questo argomento.

Per altre informazioni sulla protezione dei parametri del modello, vedere gli argomenti seguenti:

Altri oggetti modello spesso fanno riferimento ai parametri del modello in modo che possano usare i valori che passano i parametri del modello, ad esempio:

  • L'oggetto risorse del modello, descritto più avanti in questo argomento, definisce ogni risorsa in Azure che si vuole creare e distribuire, ad esempio la definizione di risorsa dell'app per la logica. Queste risorse usano spesso i valori dei parametri del modello, ad esempio il nome e la posizione dell'app per la logica e le informazioni di connessione.

  • A un livello più approfondito nella definizione della risorsa dell'app per la logica, l'oggetto parametri della definizione del flusso di lavoro dichiara i parametri per i valori da usare nel runtime dell'app per la logica. Ad esempio, è possibile dichiarare i parametri di definizione del flusso di lavoro per il nome utente e la password usati da un trigger HTTP per l'autenticazione. Per specificare i valori per i parametri di definizione del flusso di lavoro, usare l'oggetto parametersesterno alla definizione del flusso di lavoro, ma ancora all'interno della definizione di risorsa dell'app per la logica. In questo oggetto esterno parameters è possibile fare riferimento ai parametri modello dichiarati in precedenza, che possono accettare valori durante la distribuzione da un file di parametri.

Quando si fa riferimento a parametri, le espressioni modello e le funzioni usano una sintassi diversa e si comportano in modo diverso dalle espressioni e dalle funzioni di definizione del flusso di lavoro. Per altre informazioni su queste differenze, vedere Riferimenti ai parametri più avanti in questo argomento.

Procedure consigliate: parametri del modello

Ecco alcune procedure consigliate per la definizione dei parametri:

  • Dichiarare i parametri solo per i valori che variano in base alle esigenze di distribuzione. Non dichiarare parametri per i valori che rimangono uguali in requisiti di distribuzione diversi.

  • Includere l'attributo defaultValue , che può specificare valori vuoti, per tutti i parametri ad eccezione dei valori sensibili o che devono essere protetti. Usare sempre parametri protetti per nomi utente, password e segreti. Per nascondere o proteggere i valori dei parametri sensibili, seguire le indicazioni riportate in questi argomenti:

  • Per distinguere i nomi dei parametri del modello dai nomi dei parametri di definizione del flusso di lavoro, è possibile usare nomi di parametri di modello descrittivi, ad esempio: TemplateFabrikamPassword

Per altre procedure consigliate per i modelli, vedere Procedure consigliate per i parametri del modello.

File dei parametri del modello

Per fornire i valori per i parametri del modello, archiviarli in un file di parametri. In questo modo, è possibile usare file di parametri diversi in base alle esigenze di distribuzione. Ecco il formato del nome file da usare:

  • Nome file del modello di app per la logica: <logic-app-name.json>
  • Nome file di parametri: <logic-app-name>.parameters.json

Ecco la struttura all'interno del file dei parametri, che include un riferimento all'insieme di credenziali delle chiavi per passare un valore di parametro protetto con Azure Key Vault:

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
   "contentVersion": "1.0.0.0",
   // Template parameter values
   "parameters": {
      "<parameter-name-1>": {
         "value": "<parameter-value>"
      },
      "<parameter-name-2>": {
         "value": "<parameter-value>"
      },
      "<secured-parameter-name>": {
         "reference": {
            "keyVault": {
               "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/Microsoft.KeyVault/vaults/<key-vault-name>"
            },
            "secretName: "<secret-name>"
         }
      },
      <other-parameter-values>
   }
}

Questo file di parametri di esempio specifica i valori per i parametri del modello dichiarati in precedenza in questo argomento:

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
   "contentVersion": "1.0.0.0",
   // Template parameter values
   "parameters": {
      "LogicAppName": {
         "value": "Email-Processor-Logic-App"
      },
      "LogicAppLocation": {
         "value": "westeurope"
      }
   }
}

Risorse del modello

Il modello ha un resources oggetto, ovvero una matrice che contiene definizioni per ogni risorsa da creare e distribuire in Azure, ad esempio la definizione delle risorse dell'app per la logica, le definizioni delle risorse di connessione e tutte le altre risorse necessarie per la distribuzione dell'app per la logica.

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {<template-parameters>},
   "variables": {},
   "functions": [],
   "resources": [
      {
         <logic-app-resource-definition>
      },
      // Start connection resource definitions
      {
         <connection-resource-definition-1>
      },
      {
         <connection-resource-definition-2>
      }
   ],
   "outputs": {}
}

Nota

I modelli possono includere definizioni di risorse per più app per la logica, quindi assicurarsi che tutte le risorse dell'app per la logica specifichino lo stesso gruppo di risorse di Azure. Quando si distribuisce il modello in un gruppo di risorse di Azure usando Visual Studio, viene richiesto l'app per la logica da aprire. Inoltre, il progetto del gruppo di risorse di Azure può contenere più di un modello, quindi assicurarsi di selezionare il file di parametri corretto quando richiesto.

Visualizzare le definizioni delle risorse

Per esaminare le definizioni delle risorse per tutte le risorse in un gruppo di risorse di Azure, scaricare l'app per la logica da Azure in Visual Studio, che è il modo più semplice per creare un modello di app per la logica con parametri valido pronto per la distribuzione.

Per informazioni generali sulle risorse del modello e sui relativi attributi, vedere gli argomenti seguenti:

Definizione di risorsa dell'app per la logica

La definizione della risorsa flusso di lavoro dell'app per la logica in un modello inizia con l'oggetto properties , che include queste informazioni:

  • Stato dell'app per la logica in fase di distribuzione
  • ID per qualsiasi account di integrazione usato dall'app per la logica
  • Definizione del flusso di lavoro dell'app per la logica
  • Oggetto parameters che imposta i valori da utilizzare in fase di esecuzione
  • Altre informazioni sulle risorse sull'app per la logica, ad esempio nome, tipo, posizione, impostazioni di configurazione del runtime e così via
{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {<template-parameters>},
   "variables": {},
   "functions": [],
   "resources": [
      {
         // Start logic app resource definition
         "properties": {
            "state": "<Enabled or Disabled>",
            "integrationAccount": {
               "id": "[parameters('LogicAppIntegrationAccount')]" // Template parameter reference
            },
            "definition": {<workflow-definition>},
            "parameters": {<workflow-definition-parameter-values>},
            "accessControl": {},
            "runtimeConfiguration": {}
         },
         "name": "[parameters('LogicAppName')]", // Template parameter reference
         "type": "Microsoft.Logic/workflows",
         "location": "[parameters('LogicAppLocation')]", // Template parameter reference
         "tags": {
           "displayName": "LogicApp"
         },
         "apiVersion": "2019-05-01",
         "dependsOn": [
         ]
      }
      // End logic app resource definition
   ],
   "outputs": {}
}

Ecco gli attributi specifici per la definizione della risorsa dell'app per la logica:

Attributo Richiesto Type Descrizione
state String Lo stato dell'app per la logica in fase di distribuzione Enabled indica che l'app per la logica è attiva e Disabled significa che l'app per la logica è inattiva. Ad esempio, se non si è pronti per la pubblicazione dell'app per la logica, ma si vuole distribuire una versione bozza, è possibile usare l'opzione Disabled .
integrationAccount No Object Se l'app per la logica usa un account di integrazione che archivia gli artefatti per scenari business-to-business (B2B), questo oggetto include l'attributo id , che specifica l'ID per l'account di integrazione.
definition Object La definizione del flusso di lavoro sottostante dell'app per la logica, che è lo stesso oggetto visualizzato nella visualizzazione codice ed è descritto completamente nell'argomento Informazioni di riferimento sullo schema per Il linguaggio di definizione del flusso di lavoro. In questa definizione del flusso di lavoro l'oggetto parameters dichiara i parametri per i valori da usare in fase di esecuzione dell'app per la logica. Per altre informazioni, vedere Definizione e parametri del flusso di lavoro.

Per visualizzare gli attributi nella definizione del flusso di lavoro dell'app per la logica, passare da "visualizzazione progettazione" a "visualizzazione codice" nel portale di Azure o Visual Studio oppure usando uno strumento come Azure Resource Explorer.

parameters No Object Valori dei parametri di definizione del flusso di lavoro da usare in fase di esecuzione dell'app per la logica. Le definizioni dei parametri per questi valori vengono visualizzate all'interno dell'oggetto parametri della definizione del flusso di lavoro. Inoltre, se l'app per la logica usa connettori gestiti per accedere ad altri servizi e sistemi, questo oggetto include un $connections oggetto che imposta i valori di connessione da usare in fase di esecuzione.
accessControl No Object Per specificare gli attributi di sicurezza per l'app per la logica, ad esempio limitare l'accesso IP ai trigger di richiesta o agli input e agli output della cronologia di esecuzione. Per altre informazioni, vedere Proteggere l'accesso alle app per la logica.
runtimeConfiguration No Object Per specificare le operationOptions proprietà che controllano il comportamento dell'app per la logica in fase di esecuzione. Ad esempio, è possibile eseguire l'app per la logica in modalità velocità effettiva elevata.

Per altre informazioni sulle definizioni delle risorse per questi oggetti di App per la logica, vedere Tipi di risorse Microsoft.Logic:

Definizione e parametri del flusso di lavoro

La definizione del flusso di lavoro dell'app per la logica viene visualizzata nell'oggetto definition visualizzato nell'oggetto properties all'interno della definizione della risorsa dell'app per la logica. Questo definition oggetto è lo stesso oggetto visualizzato nella visualizzazione codice ed è descritto in modo completo nell'argomento Informazioni di riferimento sullo schema per Il linguaggio di definizione del flusso di lavoro. La definizione del flusso di lavoro include un oggetto dichiarazione interno parameters in cui è possibile definire parametri nuovi o modificare i parametri esistenti per i valori usati dalla definizione del flusso di lavoro in fase di esecuzione. È quindi possibile fare riferimento a questi parametri all'interno del trigger o delle azioni nel flusso di lavoro. Per impostazione predefinita, questo parameters oggetto è vuoto a meno che l'app per la logica non crei connessioni ad altri servizi e sistemi tramite connettori gestiti.

Per impostare i valori per i parametri di definizione del flusso di lavoro, usare l'oggetto parametersesterno alla definizione del flusso di lavoro, ma ancora all'interno della definizione di risorsa dell'app per la logica. In questo oggetto esterno parameters è quindi possibile fare riferimento ai parametri del modello dichiarati in precedenza, che possono accettare valori durante la distribuzione da un file di parametri.

Suggerimento

Come procedura consigliata, non fare riferimento direttamente ai parametri del modello, che vengono valutati durante la distribuzione, dall'interno della definizione del flusso di lavoro. Dichiara invece un parametro di definizione del flusso di lavoro, che è possibile impostare nell'oggetto parametersesterno alla definizione del flusso di lavoro, ma ancora all'interno della definizione di risorsa dell'app per la logica. Per altre informazioni, vedere Riferimenti ai parametri.

Questa sintassi mostra dove è possibile dichiarare i parametri sia a livello di modello che di definizione del flusso di lavoro insieme a dove è possibile impostare tali valori di parametro facendo riferimento ai parametri di definizione del modello e del flusso di lavoro:

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   // Template parameters
   "parameters": {
      "<template-parameter-name>": {
         "type": "<parameter-type>",
         "defaultValue": "<parameter-default-value>",
         "metadata": {
            "description": "<parameter-description>"
         }
      }
   },
   "variables": {},
   "functions": [],
   "resources": [
      {
         // Start logic app resource definition
         "properties": {
            <other-logic-app-resource-properties>,
            "definition": {
               "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
               "actions": {<action-definitions>},
               // Workflow definition parameters
               "parameters": {
                  "<workflow-definition-parameter-name>": {
                     "type": "<parameter-type>",
                     "defaultValue": "<parameter-default-value>",
                     "metadata": {
                        "description": "<parameter-description>"
                     }
                  }
               },
               "triggers": {
                  "<trigger-name>": {
                     "type": "<trigger-type>",
                     "inputs": {
                         // Workflow definition parameter reference
                         "<attribute-name>": "@parameters('<workflow-definition-parameter-name')"
                     }
                  }
               },
               <...>
            },
            // Workflow definition parameter value
            "parameters": {
               "<workflow-definition-parameter-name>": { 
                  "value": "[parameters('<template-parameter-name>')]"
               }
            },
            "accessControl": {}
         },
         <other-logic-app-resource-definition-attributes>
      }
      // End logic app resource definition
   ],
   "outputs": {}
}

Parametri di definizione del flusso di lavoro sicuri

Per un parametro di definizione del flusso di lavoro che gestisce informazioni riservate, password, chiavi di accesso o segreti in fase di esecuzione, dichiarare o modificare il parametro per usare il securestring tipo di parametro o secureobject . È possibile fare riferimento a questo parametro in tutta la definizione del flusso di lavoro e all'interno della definizione del flusso di lavoro. Al livello superiore del modello dichiarare un parametro con lo stesso tipo per gestire queste informazioni durante la distribuzione.

Per impostare il valore per il parametro di definizione del flusso di lavoro, usare l'oggetto parametersesterno alla definizione del flusso di lavoro, ma ancora all'interno della definizione della risorsa dell'app per la logica per fare riferimento al parametro del modello. Infine, per passare il valore al parametro del modello in fase di distribuzione, archiviare tale valore in Azure Key Vault e fare riferimento all'insieme di credenziali delle chiavi nel file dei parametri usato dal modello in fase di distribuzione.

Questo modello di esempio illustra come completare queste attività definendo i parametri protetti quando necessario in modo da archiviare i relativi valori in Azure Key Vault:

  • Dichiarare i parametri protetti per i valori usati per autenticare l'accesso.
  • Usare questi valori sia a livello di modello che di definizione del flusso di lavoro.
  • Specificare questi valori usando un file di parametri.

Modello

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
      <previously-defined-template-parameters>,
      // Additional template parameters for passing values to use in workflow definition
      "TemplateAuthenticationType": {
         "type": "string",
         "defaultValue": "",
         "metadata": {
            "description": "The type of authentication used for the Fabrikam portal"
         }
      },
      "TemplateFabrikamPassword": {
         "type": "securestring",
         "metadata": {
            "description": "The password for the Fabrikam portal"
         }
      },
      "TemplateFabrikamUserName": {
         "type": "securestring",
         "metadata": {
            "description": "The username for the Fabrikam portal"
         }
      }
   },
   "variables": {},
   "functions": [],
   "resources": [
      {
         // Start logic app resource definition
         "properties": {
            <other-logic-app-resource-properties>,
            // Start workflow definition
            "definition": {
               "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
               "actions": {<action-definitions>},
               // Workflow definition parameters
               "parameters": {
                  "authenticationType": {
                     "type": "string",
                     "defaultValue": "",
                     "metadata": {
                        "description": "The type of authentication used for the Fabrikam portal"
                     }
                  },
                  "fabrikamPassword": {
                     "type": "securestring",
                     "metadata": {
                        "description": "The password for the Fabrikam portal"
                     }
                  },
                  "fabrikamUserName": {
                     "type": "securestring",
                     "metadata": {
                        "description": "The username for the Fabrikam portal"
                     }
                  }
               },
               "triggers": {
                  "HTTP": {
                     "inputs": {
                        "authentication": {
                           // Reference workflow definition parameters
                           "password": "@parameters('fabrikamPassword')",
                           "type": "@parameters('authenticationType')",
                           "username": "@parameters('fabrikamUserName')"
                        }
                     },
                     "recurrence": {<...>},
                     "type": "Http"
                  }
               },
               <...>
            },
            // End workflow definition
            // Start workflow definition parameter values
            "parameters": {
               "authenticationType": {
                  "value": "[parameters('TemplateAuthenticationType')]" // Template parameter reference
               },
               "fabrikamPassword": {                  
                  "value": "[parameters('TemplateFabrikamPassword')]" // Template parameter reference
               },
               "fabrikamUserName": {
                  "value": "[parameters('TemplateFabrikamUserName')]" // Template parameter reference
               }
            },
            "accessControl": {}
         },
         <other-logic-app-resource-attributes>
      }
      // End logic app resource definition
   ],
   "outputs": {}
}

File di parametri

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
   "contentVersion": "1.0.0.0",
   // Template parameter values
   "parameters": {
      <previously-defined-template-parameter-values>,
     "TemplateAuthenticationType": {
        "value": "Basic"
     },
     "TemplateFabrikamPassword": {
        "reference": {
           "keyVault": {
              "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/Microsoft.KeyVault/vaults/fabrikam-key-vault"
           },
           "secretName": "FabrikamPassword"
        }
     },
     "TemplateFabrikamUserName": {
        "reference": {
           "keyVault": {
              "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/Microsoft.KeyVault/vaults/fabrikam-key-vault"
           },
           "secretName": "FabrikamUserName"
        }
     }
   }
}

Procedure consigliate: parametri di definizione del flusso di lavoro

Per assicurarsi che Progettazione app per la logica possa visualizzare correttamente i parametri di definizione del flusso di lavoro, seguire queste procedure consigliate:

Per altre informazioni sui parametri di definizione del flusso di lavoro, vedere Parametri - Linguaggio di definizione del flusso di lavoro.

Definizioni delle risorse di connessione

Quando l'app per la logica crea e usa connessioni ad altri servizi e sistema usando connettori gestiti, l'oggetto del resources modello contiene le definizioni delle risorse per tali connessioni. Anche se si creano connessioni dall'interno di un'app per la logica, le connessioni sono risorse di Azure separate con le proprie definizioni di risorse. Inoltre, se la connessione usa una risorsa gateway dati locale, questa definizione di risorsa esiste separatamente dalla definizione della risorsa del connettore. Per altre informazioni, vedere Definizioni delle risorse del gateway dati locale e Connessione Microsoft.WebGateways.

Per esaminare le definizioni delle risorse di connessione, scaricare l'app per la logica da Azure in Visual Studio, che è il modo più semplice per creare un modello di app per la logica con parametri valido pronto per la distribuzione.

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {<template-parameters>},
   "variables": {},
   "functions": [],
   "resources": [
      {
         <logic-app-resource-definition>
      },
      // Start connection resource definitions
      {
         <connection-resource-definition-1>
      },
      {
         <connection-resource-definition-2>
      }
   ],
   "outputs": {}
}

Le definizioni delle risorse di connessione fanno riferimento ai parametri di primo livello del modello per i relativi valori, in modo da poter fornire questi valori durante la distribuzione usando un file di parametri. Assicurarsi che le connessioni usino lo stesso gruppo di risorse di Azure e la stessa posizione dell'app per la logica.

Ecco una definizione di risorsa di esempio per una connessione di Office 365 Outlook e i parametri del modello corrispondenti:

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   // Template parameters
   "parameters": {
      "LogicAppName": {<parameter-definition>},
      "LogicAppLocation": {<parameter-definition>},
      "office365_1_Connection_Name": {
         "type": "string",
         "defaultValue": "office365",
         "metadata": {
            "description": "The resource name for the Office 365 Outlook connection"
         }
      },
      "office365_1_Connection_DisplayName": {
         "type": "string",
         "defaultValue": "",
         "metadata": {
            "description": "The display name for the Office 365 Outlook connection"
         }
      }
   },
   "variables": {},
   "functions": [],
   "resources": [
      {
         <logic-app-resource-definition>
      },
      // Office 365 Outlook API connection resource definition
      {
         "type": "Microsoft.Web/connections",
         "apiVersion": "2016-06-01",
         // Template parameter reference for connection name
         "name": "[parameters('office365_1_Connection_Name')]",
         // Template parameter reference for connection resource location. Must match logic app location.
         "location": "[parameters('LogicAppLocation')]",
         "properties": {
            "api": {
               // Connector ID
               "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]"
            },
            // Template parameter reference for connection display name
            "displayName": "[parameters('office365_1_Connection_DisplayName')]"
         }
      }
   ],
   "outputs": {}
}

La definizione delle risorse dell'app per la logica funziona anche con le definizioni delle risorse di connessione nei modi seguenti:

  • All'interno della definizione del flusso di lavoro, l'oggetto parameters dichiara un $connections parametro per i valori di connessione da usare in fase di esecuzione dell'app per la logica. Inoltre, il trigger o l'azione che crea una connessione usa i valori corrispondenti che passano attraverso questo $connections parametro.

  • All'esterno della definizione del flusso di lavoro, ma ancora all'interno della definizione della risorsa dell'app per la logica, un altro parameters oggetto imposta i valori da usare in fase di esecuzione per il $connections parametro facendo riferimento ai parametri del modello corrispondenti. Questi valori usano espressioni modello per fare riferimento a risorse che archiviano in modo sicuro i metadati per le connessioni nell'app per la logica.

    Ad esempio, i metadati possono includere stringa di connessione e token di accesso, che è possibile archiviare in Azure Key Vault. Per passare tali valori ai parametri del modello, fare riferimento all'insieme di credenziali delle chiavi nel file dei parametri usato dal modello in fase di distribuzione. Per altre informazioni sulle differenze nei parametri di riferimento, vedere Riferimenti ai parametri più avanti in questo argomento.

    Quando si apre la definizione del flusso di lavoro dell'app per la logica nella visualizzazione codice tramite il portale di Azure o Visual Studio, l'oggetto $connections viene visualizzato all'esterno della definizione del flusso di lavoro, ma allo stesso livello. Questo ordinamento nella visualizzazione codice semplifica il riferimento a questi parametri quando si aggiorna manualmente la definizione del flusso di lavoro:

    {
       "$connections": {<workflow-definition-parameter-connection-values-runtime},
       "definition": {<workflow-definition>}
    }
    
  • La definizione di risorsa dell'app per la logica ha un dependsOn oggetto che specifica le dipendenze dalle connessioni usate dall'app per la logica.

Ogni connessione creata ha un nome univoco in Azure. Quando si creano più connessioni allo stesso servizio o sistema, ogni nome di connessione viene aggiunto con un numero, che viene incrementato con ogni nuova connessione creata, ad esempio , office365office365-1e così via.

Questo esempio mostra le interazioni tra la definizione della risorsa dell'app per la logica e una definizione di risorsa di connessione per Office 365 Outlook:

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   // Template parameters
   "parameters": {
      "LogicAppName": {<parameter-definition>},
      "LogicAppLocation": {<parameter-definition>},
      "office365_1_Connection_Name": {<parameter-definition>},
      "office365_1_Connection_DisplayName": {<parameter-definition>}
   },
   "variables": {},
   "functions": [],
   "resources": [
      {
         // Start logic app resource definition
         "properties": {
            <...>,
            "definition": {
               <...>,
               "parameters": {
                  // Workflow definition "$connections" parameter
                  "$connections": {
                     "defaultValue": {},
                     "type": "Object"
                  }
               },
               <...>
            },
            "parameters": {
               // Workflow definition "$connections" parameter values to use at runtime
               "$connections": {
                  "value": {
                     "office365": {
                        // Template parameter references
                        "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]",
                        "connectionId": "[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]",
                        "connectionName": "[parameters('office365_1_Connection_Name')]"
                     }
                  }
               }
            }
         },
         <other-logic-app-resource-information>,
         "dependsOn": [
            "[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]"
         ]
         // End logic app resource definition
      },
      // Office 365 Outlook API connection resource definition
      {
         "type": "Microsoft.Web/connections",
         "apiVersion": "2016-06-01",
         // Template parameter reference for connection name
         "name": "[parameters('office365_1_Connection_Name')]",
         // Template parameter reference for connection resource location. Must match logic app location.
         "location": "[parameters('LogicAppLocation')]",
         "properties": {
            "api": {
               // Connector ID
               "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]"
            },
            // Template parameter reference for connection display name
            "displayName": "[parameters('office365_1_Connection_DisplayName')]"
         }
      }
   ],
   "outputs": {}
}

Definizioni di risorse 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, seguire questa procedura:

  1. Nella portale di Azure trovare e visualizzare la risorsa di Azure per il gateway dati locale.

  2. Nel menu delle risorse, in Automazione, selezionare Esporta modello.

    Dopo che Azure genera il modello, la definizione della risorsa del gateway viene visualizzata nella finestra del codice.

Per altre informazioni, vedere Microsoft.Web connectionGateways.

Proteggere i parametri di connessione

Per un parametro di connessione che gestisce informazioni riservate, password, chiavi di accesso o segreti, la definizione della risorsa della connessione include un parameterValues oggetto che specifica questi valori in formato coppia nome-valore. Per nascondere queste informazioni, è possibile dichiarare o modificare i parametri del modello per questi valori usando i securestring tipi di parametro o secureobject . È quindi possibile archiviare tali informazioni in Azure Key Vault. Per passare tali valori ai parametri del modello, fare riferimento all'insieme di credenziali delle chiavi nel file dei parametri usato dal modello in fase di distribuzione.

Di seguito è riportato un esempio che fornisce il nome dell'account e la chiave di accesso per una connessione Archiviazione BLOB di Azure:

File di parametri

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
   "contentVersion": "1.0.0.0",
   // Template parameter values
   "parameters": {
      "LogicAppName": {
         "value": "Email-Processor-Logic-App"
      },
      "LogicAppLocation": {
         "value": "westeurope"
      },
      "azureblob_1_Connection_Name": {
         "value": "Fabrikam-Azure-Blob-Storage-Connection"
      },
      "azureblob_1_Connection_DisplayName": {
         "value": "Fabrikam-Storage"
      },
      "azureblob_1_accountName": {
         "value": "Fabrikam-Storage-Account"
      },
      "azureblob_1_accessKey": {
         "reference": {
            "keyVault": {
               "id": "/subscriptions/<Azure-subscription-ID>/resourceGroups/<Azure-resource-group-name>/Microsoft.KeyVault/vaults/fabrikam-key-vault"
            },
            "secretName": "FabrikamStorageKey"
         }
      }
   }
}

Modello

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   // Template parameters
   "parameters": {
      "LogicAppName": {<parameter-definition>},
      "LogicAppLocation": {<parameter-definition>},
      "azureblob_1_Connection_Name": {<parameter-definition>},
      "azureblob_1_Connection_DisplayName": {<parameter-definition>},
      "azureblob_1_accountName": {
         "type": "string",
         "defaultValue": "",
         "metadata": {
            "description": "Name of the storage account the connector should use."
         }
      },
      "azureblob_1_accessKey": {
         "type": "secureobject",
         "metadata": {
            "description": "Specify a valid primary/secondary storage account access key."
         }
      }
   },
   "variables": {},
   "functions": [],
   "resources": [
      {
         "properties": {
            "state": "Disabled",
            "definition": {
               "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
               "actions": {
                  // Azure Blob Storage action
                  "Create_blob": {
                     "type": "ApiConnection",
                     "inputs": {
                        "host": {
                           "connection": {
                              // Workflow definition parameter reference for values to use at runtime
                              "name": "@parameters('$connections')['azureblob']['connectionId']"
                           }
                        },
                     },
                     "method": "post",
                     "body": "@triggerBody()?['Body']",
                     "path": "/datasets/default/files",
                     "queries": {
                        "folderPath": "/emails",
                        "name": "@triggerBody()?['Subject']",
                        "queryParametersSingleEncoded": true
                     },
                     "runAfter": {},
                     "runtimeConfiguration": {
                        "contentTransfer": {
                           "transferMode": "Chunked"
                        }
                     }
                  }
               },
               "parameters": {
                  // Workflow definition parameter for values to use at runtime
                  "$connections": {
                     "defaultValue": {},
                     "type": "Object"
                  }
               },
               "triggers": {<trigger-definition>},
               "contentVersion": "1.0.0.0",
               "outputs": {}
            },
            "parameters": {
               "$connections": {
                  "value": {
                     // Template parameter references for values to use at runtime
                     "azureblob": {
                        "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'azureblob')]",
                        "connectionId": "[resourceId('Microsoft.Web/connections', parameters('azureblob_1_Connection_Name'))]",
                        "connectionName": "[parameters('azureblob_1_Connection_Name')]"
                    }
                  }
               }
            },
            "name": "[parameters('LogicAppName')]",
            "type": "Microsoft.Logic/workflows",
            "location": "[parameters('LogicAppLocation')]",
            "tags": {
               "displayName": "LogicApp"
            },
            "apiVersion": "2019-05-01",
            // Template parameter reference for value to use at deployment
            "dependsOn": [
               "[resourceId('Microsoft.Web/connections', parameters('azureblob_1_Connection_Name'))]"
            ]
         }
      },
      // Azure Blob Storage API connection resource definition
      {
         "type": "Microsoft.Web/connections",
         "apiVersion": "2016-06-01",
         "name": "[parameters('azureblob_1_Connection_Name')]",
         "location": "[parameters('LogicAppLocation')]",
         "properties": {
            "api": {
               "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'azureblob')]"
            },
            "displayName": "[parameters('azureblob_1_Connection_DisplayName')]",
            // Template parameter reference for values to use at deployment
            "parameterValues": {
               "accountName": "[parameters('azureblob_1_accountName')]",
               "accessKey": "[parameters('azureblob_1_accessKey')]"
            }
         }
      }
   ],
   "outputs": {}
}

Autenticare le connessioni

Dopo la distribuzione, l'app per la logica funziona end-to-end con parametri validi. Tuttavia, è comunque necessario autorizzare tutte le connessioni OAuth a generare token di accesso validi per l'autenticazione delle credenziali. Per altre informazioni, vedere Autorizzare le connessioni OAuth.

Alcune connessioni supportano l'uso di un'entità servizio Microsoft Entra per autorizzare le connessioni per un'app per la logica registrata in Microsoft Entra ID. Ad esempio, questa definizione di risorsa di connessione di Azure Data Lake mostra come fare riferimento ai parametri del modello che gestiscono le informazioni dell'entità servizio e come il modello dichiara questi parametri:

Definizione della risorsa di connessione

{
   <other-template-objects>
   "type": "Microsoft.Web/connections",
   "apiVersion": "2016-06-01",
   "name": "[parameters('azuredatalake_1_Connection_Name')]",
   "location": "[parameters('LogicAppLocation')]",
   "properties": {
      "api": {
         "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', 'resourceGroup().location', '/managedApis/', 'azuredatalake')]"
      },
      "displayName": "[parameters('azuredatalake_1_Connection_DisplayName')]",
      "parameterValues": {
         "token:clientId": "[parameters('azuredatalake_1_token:clientId')]",
         "token:clientSecret": "[parameters('azuredatalake_1_token:clientSecret')]",
         "token:TenantId": "[parameters('azuredatalake_1_token:TenantId')]",
         "token:grantType": "[parameters('azuredatalake_1_token:grantType')]"
      }
   }
}
Attributo Descrizione
token:clientId L'applicazione o l'ID client associato all'entità servizio
token:clientSecret Valore della chiave associato all'entità servizio
token:TenantId ID directory per il tenant di Microsoft Entra
token:grantType Tipo di concessione richiesto, che deve essere client_credentials. Per altre informazioni, vedere Microsoft Identity Platform e il flusso delle credenziali client OAuth 2.0.

Definizioni dei parametri del modello

L'oggetto di livello parameters superiore del modello dichiara questi parametri per la connessione di esempio:

{
   "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
   "contentVersion": "1.0.0.0",
   "parameters": {
      "azuredatalake_1_Connection_Name": {
        "type": "string",
        "defaultValue": "azuredatalake"
      },
      "azuredatalake_1_Connection_DisplayName": {
        "type": "string",
        "defaultValue": "<connection-name>"
      },
      "azuredatalake_1_token:clientId": {
        "type": "securestring",
        "metadata": {
          "description": "Client (or Application) ID of the Azure Active Directory application."
        }
      },
      "azuredatalake_1_token:clientSecret": {
        "type": "securestring",
        "metadata": {
          "description": "Client secret of the Azure Active Directory application."
        }
      },
      "azuredatalake_1_token:TenantId": {
        "type": "securestring",
        "metadata": {
          "description": "The tenant ID of for the Azure Active Directory application."
        }
      },
      "azuredatalake_1_token:resourceUri": {
        "type": "string",
        "metadata": {
          "description": "The resource you are requesting authorization to use."
        }
      },
      "azuredatalake_1_token:grantType": {
        "type": "string",
        "metadata": {
          "description": "Grant type"
        },
        "defaultValue": "client_credentials",
        "allowedValues": [
          "client_credentials"
        ]
      },
      // Other template parameters
   }
   // Other template objects
}

Per altre informazioni sull'uso delle entità servizio, vedere gli argomenti seguenti:

Riferimenti ai parametri

Per fare riferimento ai parametri del modello, è possibile usare espressioni modello con funzioni modello, che vengono valutate in fase di distribuzione. Le espressioni modello usano parentesi quadre ([]):

"<attribute-name>": "[parameters('<template-parameter-name>')]"

Per fare riferimento ai parametri di definizione del flusso di lavoro, usare espressioni e funzioni del linguaggio di definizione del flusso di lavoro, che vengono valutate in fase di esecuzione. È possibile notare che alcune funzioni modello e funzioni di definizione del flusso di lavoro hanno lo stesso nome. Le espressioni di definizione del flusso di lavoro iniziano con il simbolo "at" (@):

"<attribute-name>": "@parameters('<workflow-definition-parameter-name>')"

È possibile passare i valori dei parametri del modello alla definizione del flusso di lavoro per l'app per la logica da usare in fase di esecuzione. Tuttavia, evitare di usare parametri, espressioni e sintassi del modello nella definizione del flusso di lavoro perché Progettazione app per la logica non supporta gli elementi del modello. Inoltre, la sintassi dei modelli e le espressioni possono complicare il codice a causa delle differenze in quando vengono valutate le espressioni.

Seguire invece questi passaggi generali per dichiarare e fare riferimento ai parametri di definizione del flusso di lavoro da usare in fase di esecuzione, dichiarare e fare riferimento ai parametri del modello da usare nella distribuzione e specificare i valori da passare nella distribuzione usando un file di parametri. Per informazioni dettagliate, vedere la sezione Definizione del flusso di lavoro e parametri più indietro in questo argomento.

  1. Creare il modello e dichiarare i parametri del modello per i valori da accettare e usare durante la distribuzione.

  2. Nella definizione del flusso di lavoro dichiarare i parametri per i valori da accettare e usare in fase di esecuzione. È quindi possibile fare riferimento a questi valori all'interno e nella definizione del flusso di lavoro.

  3. Nell'oggetto parametersesterno alla definizione del flusso di lavoro, ma ancora all'interno della definizione di risorsa dell'app per la logica, impostare i valori per i parametri di definizione del flusso di lavoro facendo riferimento ai parametri del modello corrispondenti. In questo modo, è possibile passare i valori dei parametri del modello nei parametri di definizione del flusso di lavoro.

  4. Nel file dei parametri specificare i valori per il modello da usare in fase di distribuzione.

Modello di esempio completo

Di seguito è riportato il modello di esempio con parametri usato dagli esempi di questo argomento:

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
   "parameters": {
      "LogicAppName": {
         "type": "string",
         "minLength": 1,
         "maxLength": 80,
         "defaultValue": "MyLogicApp",
         "metadata": {
            "description": "The resource name to use for the logic app"
         }
      },
      "LogicAppLocation": {
         "type": "string",
         "minLength": 1,
         "defaultValue": "[resourceGroup().location]",
         "metadata": {
            "description": "The resource location to use for the logic app"
         }
      },
      "office365_1_Connection_Name": {
         "type": "string",
         "defaultValue": "office365",
         "metadata": {
            "description": "The resource name to use for the Office 365 Outlook connection"
         }
      },
      "office365_1_Connection_DisplayName": {
         "type": "string",
         "defaultValue": "",
         "metadata": {
            "description": "The display name to use for the Office 365 Outlook connection"
         }
      },
      "azureblob_1_Connection_Name": {
         "type": "string",
         "defaultValue": "azureblob",
         "metadata": {
            "description": "The resource name to use for the Azure Blob storage account connection"
         }
      },
      "azureblob_1_Connection_DisplayName": {
         "type": "string",
         "defaultValue": "",
         "metadata": {
            "description": "Name of the storage account the connector should use."
         }

      },
      "azureblob_1_accountName": {
         "type": "string",
         "defaultValue": "",
         "metadata": {
            "description": "Name of the storage account the connector should use."
         }
      },
      "azureblob_1_accessKey": {
         "type": "securestring",
         "metadata": {
            "description": "Specify a valid primary/secondary storage account access key."
         }
      },
      "LogicAppIntegrationAccount": {
         "type":"string",
         "minLength": 1,
         "defaultValue": "/subscriptions/<Azure-subscription-ID>/resourceGroups/fabrikam-integration-account-rg/providers/Microsoft.Logic/integrationAccounts/fabrikam-integration-account",
         "metadata": {
            "description": "The ID to use for the integration account"
         }
      }
   },
   "variables": {},
   "resources": [
      {
         "properties": {
            "state": "Disabled",
            "integrationAccount": {
              "id": "[parameters('LogicAppIntegrationAccount')]"
            },
            "definition": {
               "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
               "actions": {
                  "Create_blob": {
                     "type": "ApiConnection",
                     "inputs": {
                        "host": {
                           "connection": {
                              "name": "@parameters('$connections')['azureblob']['connectionId']"
                           }
                        }
                     },
                     "method": "post",
                     "body": "@triggerBody()?['Body']",
                     "path": "/datasets/default/files",
                     "queries": {
                        "folderPath": "/emails",
                        "name": "@triggerBody()?['Subject']",
                        "queryParametersSingleEncoded": true
                     },
                     "runAfter": {},
                     "runtimeConfiguration": {
                        "contentTransfer": {
                           "transferMode": "Chunked"
                        }
                     }
                  }
               },
               "parameters": {
                  "$connections": {
                     "defaultValue": {},
                     "type": "Object"
                  }
               },
               "triggers": {
                  "When_a_new_email_arrives": {
                     "type": "ApiConnection",
                     "inputs": {
                        "host": {
                           "connection": {
                              "name": "@parameters('$connections')['office365']['connectionId']"
                           }
                        },
                        "method": "get",
                        "path": "/Mail/OnNewEmail",
                        "queries": {
                           "folderPath": "Inbox",
                           "importance": "Any",
                           "fetchOnlyWithAttachment": false,
                           "includeAttachments": false
                        }
                     },
                     "recurrence": {
                        "frequency": "Day",
                        "interval": 1
                     },
                     "splitOn": "@triggerBody()?['value']"
                  }
               },
               "contentVersion": "1.0.0.0",
               "outputs": {}
            },
            "parameters": {
               "$connections": {
                  "value": {
                     "azureblob": {
                        "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'azureblob')]",
                        "connectionId": "[resourceId('Microsoft.Web/connections', parameters('azureblob_1_Connection_Name'))]",
                        "connectionName": "[parameters('azureblob_1_Connection_Name')]"
                     },
                     "office365": {
                        "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]",
                        "connectionId": "[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]",
                        "connectionName": "[parameters('office365_1_Connection_Name')]"
                     }
                  }
               }
            },
            "accessControl": {}
         },
         "name": "[parameters('LogicAppName')]",
         "type": "Microsoft.Logic/workflows",
         "location": "[parameters('LogicAppLocation')]",
         "tags": {
            "displayName": "LogicApp"
         },
         "apiVersion": "2019-05-01",
         "dependsOn": [
            "[resourceId('Microsoft.Web/connections', parameters('azureblob_1_Connection_Name'))]",
            "[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]"
         ]
      },
      {
         "type": "Microsoft.Web/connections",
         "apiVersion": "2016-06-01",
         "name": "[parameters('office365_1_Connection_Name')]",
         "location": "[parameters('LogicAppLocation')]",
         "properties": {
            "api": {
                "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'office365')]"
            },
            "displayName": "[parameters('office365_1_Connection_DisplayName')]"
         }
      },
      {
         "type": "Microsoft.Web/connections",
         "apiVersion": "2016-06-01",
         "name": "[parameters('azureblob_1_Connection_Name')]",
         "location": "[parameters('LogicAppLocation')]",
         "properties": {
            "api": {
               "id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('LogicAppLocation'), '/managedApis/', 'azureblob')]"
            },
            "displayName": "[parameters('azureblob_1_Connection_DisplayName')]",
            "parameterValues": {
               "accountName": "[parameters('azureblob_1_accountName')]",
               "accessKey": "[parameters('azureblob_1_accessKey')]"
            }
         }
      }
   ],
   "outputs": {}
}

Passaggi successivi