Overzicht: Implementatie voor Azure Logic Apps automatiseren met behulp van Azure Resource Manager-sjablonen

Van toepassing op: Azure Logic Apps (verbruik)

Wanneer u klaar bent om het maken en implementeren van uw logische app te automatiseren, kunt u de onderliggende werkstroomdefinitie van uw logische app uitbreiden naar een Azure Resource Manager-sjabloon. Deze sjabloon definieert de infrastructuur, resources, parameters en andere informatie voor het inrichten en implementeren van uw logische app. Door parameters te definiëren voor waarden die variëren tijdens de implementatie, ook wel parameteriseren genoemd, kunt u logische apps herhaaldelijk en consistent implementeren op basis van verschillende implementatiebehoeften.

Als u bijvoorbeeld implementeert in omgevingen voor ontwikkeling, testen en productie, gebruikt u waarschijnlijk verschillende verbindingsreeksen voor elke omgeving. U kunt sjabloonparameters declareren die verschillende verbindingsreeksen accepteren en deze tekenreeksen vervolgens opslaan in een afzonderlijk parameterbestand. Op die manier kunt u deze waarden wijzigen zonder dat u de sjabloon hoeft bij te werken en opnieuw te implementeren. Voor scenario's waarin u parameterwaarden hebt die gevoelig zijn of moeten worden beveiligd, zoals wachtwoorden en geheimen, kunt u deze waarden opslaan in Azure Key Vault en uw parameterbestand deze waarden laten ophalen. In deze scenario's implementeert u echter opnieuw om de huidige waarden op te halen.

In dit overzicht worden de kenmerken beschreven in een Resource Manager sjabloon die een werkstroomdefinitie voor een logische app bevat. Zowel de sjabloon als de werkstroomdefinitie gebruiken JSON-syntaxis, maar er zijn enkele verschillen omdat de werkstroomdefinitie ook het schema Van de werkstroomdefinitietaal volgt. Sjabloonexpressies en werkstroomdefinitieexpressies verschillen bijvoorbeeld in de wijze waarop ze verwijzen naar parameters en de waarden die ze kunnen accepteren.

Tip

Gebruik Visual Studio (gratis Community-editie of hoger) en de Azure Logic Apps Tools for Visual Studio voor de eenvoudigste manier om een geldige sjabloon voor logische apps te krijgen die grotendeels gereed is voor implementatie. Vervolgens kunt u uw logische app maken in Visual Studio of een bestaande logische app van Azure zoeken en downloaden naar Visual Studio.

U kunt ook sjablonen voor logische apps maken met behulp van Azure PowerShell met de module LogicAppTemplate.

De voorbeeldlogica-app in dit onderwerp maakt gebruik van een Office 365 Outlook-trigger die wordt geactiveerd wanneer er een nieuwe e-mail binnenkomt en een Azure Blob Storage actie waarmee een blob voor de hoofdtekst van de e-mail wordt gemaakt en die blob wordt geüpload naar een Azure-opslagcontainer. De voorbeelden laten ook zien hoe u waarden kunt parametriseren die variëren tijdens de implementatie.

Zie de volgende onderwerpen voor meer informatie over Resource Manager sjablonen:

Zie Microsoft.Logic-resourcetypen voor informatie over sjabloonresources die specifiek zijn voor logische apps, integratieaccountartefacten en integratieserviceomgevingen.

Zie deze voorbeelden voor voorbeelden van logische app-sjablonen:

Voor de Logic Apps REST API begint u met het overzicht van de Azure Logic Apps REST API.

Sjabloonstructuur

Op het hoogste niveau volgt een Resource Manager sjabloon deze structuur, die volledig wordt beschreven in het onderwerp Azure Resource Manager sjabloonstructuur en syntaxis:

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

Voor een logische app-sjabloon werkt u voornamelijk met deze sjabloonobjecten:

Kenmerk Beschrijving
parameters Declareert de sjabloonparameters voor het accepteren van de waarden die moeten worden gebruikt bij het maken en aanpassen van resources voor implementatie in Azure. Deze parameters accepteren bijvoorbeeld de waarden voor de naam en locatie van uw logische app, verbindingen en andere resources die nodig zijn voor de implementatie. U kunt deze parameterwaarden opslaan in een parameterbestand, dat verderop in dit onderwerp wordt beschreven. Zie Parameters - Resource Manager sjabloonstructuur en syntaxis voor algemene informatie.
resources Definieert de resources die moeten worden gemaakt of bijgewerkt en geïmplementeerd in een Azure-resourcegroep, zoals uw logische app, verbindingen, Azure-opslagaccounts, enzovoort. Zie Resources - Resource Manager sjabloonstructuur en syntaxis voor algemene informatie.

De sjabloon voor de logische app gebruikt deze bestandsindeling:

<logic-app-name>. Json

Belangrijk

Sjabloonsyntaxis is hoofdlettergevoelig, dus zorg ervoor dat u consistent hoofdlettergebruik gebruikt.

Sjabloonparameters

Een sjabloon voor een logische app heeft meerdere parameters objecten die op verschillende niveaus bestaan en verschillende functies uitvoeren. Op het hoogste niveau kunt u bijvoorbeeld sjabloonparameters declareren voor de waarden die moeten worden geaccepteerd en gebruikt bij de implementatie bij het maken en implementeren van resources in Azure, bijvoorbeeld:

  • Uw logische app

  • Verbindingen die uw logische app gebruikt voor toegang tot andere services en systemen via beheerde connectors

  • Andere resources die uw logische app nodig heeft voor implementatie

    Als uw logische app bijvoorbeeld gebruikmaakt van een integratieaccount voor B2B-scenario's (business-to-business), declareert het object op het hoogste niveau parameters van de sjabloon de parameter die de resource-id voor dat integratieaccount accepteert.

Hier volgt de algemene structuur en syntaxis voor een parameterdefinitie, die volledig wordt beschreven door Parameters - Resource Manager sjabloonstructuur en syntaxis:

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

In dit voorbeeld ziet u alleen de sjabloonparameters voor de waarden die worden gebruikt voor het maken en implementeren van deze resources in Azure:

  • Naam en locatie voor uw logische app
  • Id die moet worden gebruikt voor een integratieaccount dat is gekoppeld aan de logische app
{
   "$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": {}
}

Met uitzondering van parameters die waarden verwerken die gevoelig zijn of moeten worden beveiligd, zoals gebruikersnamen, wachtwoorden en geheimen, bevatten defaultValue al deze parameters kenmerken, hoewel in sommige gevallen de standaardwaarden lege waarden zijn. De implementatiewaarden die voor deze sjabloonparameters moeten worden gebruikt, worden verstrekt door het bestand met voorbeeldparameters dat verderop in dit onderwerp wordt beschreven.

Zie de volgende onderwerpen voor meer informatie over het beveiligen van sjabloonparameters:

Andere sjabloonobjecten verwijzen vaak naar sjabloonparameters, zodat ze de waarden kunnen gebruiken die sjabloonparameters doorgeven, bijvoorbeeld:

  • Het resourceobject van uw sjabloon, dat verderop in dit onderwerp wordt beschreven, definieert elke resource in Azure die u wilt maken en implementeren, zoals de resourcedefinitie van uw logische app. Deze resources gebruiken vaak sjabloonparameterwaarden, zoals de naam, locatie en verbindingsgegevens van uw logische app.

  • Op een dieper niveau in de resourcedefinitie van uw logische app declareert het parameterobject van uw werkstroomdefinitie parameters voor de waarden die moeten worden gebruikt tijdens de runtime van uw logische app. U kunt bijvoorbeeld parameters voor werkstroomdefinitie declareren voor de gebruikersnaam en het wachtwoord die een HTTP-trigger gebruikt voor verificatie. Als u de waarden voor werkstroomdefinitieparameters wilt opgeven, gebruikt u het parameters object dat zich buiten de werkstroomdefinitie bevindt, maar nog steeds binnen de resourcedefinitie van uw logische app. In dit buitenste parameters object kunt u verwijzen naar eerder gedeclareerde sjabloonparameters, die waarden kunnen accepteren bij de implementatie uit een parameterbestand.

Wanneer u naar parameters verwijst, gebruiken sjabloonexpressies en -functies een andere syntaxis en gedragen ze zich anders dan expressies en functies voor werkstroomdefinities. Zie Verwijzingen naar parameters verderop in dit onderwerp voor meer informatie over deze verschillen.

Aanbevolen procedures - sjabloonparameters

Hier volgen enkele aanbevolen procedures voor het definiëren van parameters:

  • Declareer parameters alleen voor waarden die variëren, afhankelijk van uw implementatiebehoeften. Declareer geen parameters voor waarden die hetzelfde blijven voor verschillende implementatievereisten.

  • Neem het defaultValue kenmerk op, waarmee lege waarden kunnen worden opgegeven, voor alle parameters, met uitzondering van waarden die gevoelig zijn of moeten worden beveiligd. Gebruik altijd beveiligde parameters voor gebruikersnamen, wachtwoorden en geheimen. Volg de richtlijnen in deze onderwerpen om gevoelige parameterwaarden te verbergen of te beveiligen:

  • Als u namen van sjabloonparameters wilt onderscheiden van namen van werkstroomdefinitieparameters, kunt u beschrijvende sjabloonparameternamen gebruiken, bijvoorbeeld: TemplateFabrikamPassword

Zie Aanbevolen procedures voor sjabloonparameters voor meer aanbevolen procedures voor sjablonen.

Sjabloonparametersbestand

Als u de waarden voor sjabloonparameters wilt opgeven, slaat u deze waarden op in een parameterbestand. Op die manier kunt u verschillende parametersbestanden gebruiken op basis van uw implementatiebehoeften. Dit is de bestandsindeling die moet worden gebruikt:

  • Bestandsnaam van sjabloon voor logische app: <logic-app-name.json>
  • Bestandsnaam van parameters: <logic-app-name.parameters.json>

Dit is de structuur in het parameterbestand, dat een sleutelkluisreferentie bevat voor het doorgeven van een beveiligde parameterwaarde met 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>
   }
}

In dit voorbeeld van het parameterbestand worden de waarden opgegeven voor de sjabloonparameters die eerder in dit onderwerp zijn gedeclareerd:

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

Sjabloonresources

Uw sjabloon heeft een resources -object. Dit is een matrix die definities bevat voor elke resource die moet worden gemaakt en geïmplementeerd in Azure, zoals de resourcedefinitie van uw logische app, verbindingsresourcedefinities en andere resources die uw logische app nodig heeft voor implementatie.

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

Notitie

Sjablonen kunnen resourcedefinities voor meerdere logische apps bevatten, dus zorg ervoor dat al uw logische app-resources dezelfde Azure-resourcegroep opgeven. Wanneer u de sjabloon implementeert in een Azure-resourcegroep met behulp van Visual Studio, wordt u gevraagd welke logische app u wilt openen. Uw Azure-resourcegroepproject kan ook meer dan één sjabloon bevatten, dus zorg ervoor dat u het juiste parameterbestand selecteert wanneer u hierom wordt gevraagd.

Resourcedefinities weergeven

Als u de resourcedefinities voor alle resources in een Azure-resourcegroep wilt controleren, downloadt u uw logische app van Azure naar Visual Studio. Dit is de eenvoudigste manier om een geldige sjabloon voor een logische app met parameters te maken die grotendeels gereed is voor implementatie.

Zie de volgende onderwerpen voor algemene informatie over sjabloonresources en de bijbehorende kenmerken:

Resourcedefinitie van logische app

De werkstroomresourcedefinitie van uw logische app in een sjabloon begint met het properties -object, dat deze informatie bevat:

  • De status van uw logische app tijdens de implementatie
  • De id voor een integratieaccount dat wordt gebruikt door uw logische app
  • De werkstroomdefinitie van uw logische app
  • Een parameters object waarmee de waarden worden ingesteld die tijdens runtime moeten worden gebruikt
  • Andere resourcegegevens over uw logische app, zoals naam, type, locatie, eventuele runtimeconfiguratie-instellingen, enzovoort
{
   "$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": {}
}

Dit zijn de kenmerken die specifiek zijn voor de resourcedefinitie van uw logische app:

Kenmerk Vereist Type Beschrijving
state Ja Tekenreeks De status van uw logische app tijdens de implementatie Enabled betekent dat uw logische app live is en Disabled betekent dat uw logische app inactief is. Als u bijvoorbeeld nog niet klaar bent om uw logische app live te laten gaan, maar wel een conceptversie wilt implementeren, kunt u de Disabled optie gebruiken.
integrationAccount No Object Als uw logische app gebruikmaakt van een integratieaccount, waarin artefacten voor B2B-scenario's (business-to-business) worden opgeslagen, bevat dit object het id kenmerk, waarmee de id voor het integratieaccount wordt opgegeven.
definition Ja Object De onderliggende werkstroomdefinitie van uw logische app. Dit is hetzelfde object dat wordt weergegeven in de codeweergave en wordt volledig beschreven in het onderwerp Schemaverwijzing voor Werkstroomdefinitietaal . In deze werkstroomdefinitie declareert het parameters -object parameters voor de waarden die moeten worden gebruikt tijdens de runtime van de logische app. Zie Werkstroomdefinitie en -parameters voor meer informatie.

Als u de kenmerken in de werkstroomdefinitie van uw logische app wilt weergeven, schakelt u over van 'ontwerpweergave' naar 'codeweergave' in de Azure Portal of Visual Studio, of met behulp van een hulpprogramma zoals Azure Resource Explorer.

parameters No Object De parameterwaarden voor de werkstroomdefinitie die moeten worden gebruikt tijdens de runtime van de logische app. De parameterdefinities voor deze waarden worden weergegeven in het parameterobject van uw werkstroomdefinitie. Als uw logische app beheerde connectors gebruikt voor toegang tot andere services en systemen, bevat dit object ook een $connections object waarmee de verbindingswaarden worden ingesteld voor gebruik tijdens runtime.
accessControl No Object Voor het opgeven van beveiligingskenmerken voor uw logische app, zoals het beperken van IP-toegang tot aanvraagtriggers of invoer en uitvoer van de uitvoeringsgeschiedenis. Zie Beveiligde toegang tot logische apps voor meer informatie.
runtimeConfiguration No Object Voor het opgeven van operationOptions eigenschappen die bepalen hoe uw logische app zich gedraagt tijdens runtime. U kunt uw logische app bijvoorbeeld uitvoeren in de modus voor hoge doorvoer.

Zie Microsoft.Logic-resourcetypen voor meer informatie over resourcedefinities voor deze Logic Apps-objecten:

Werkstroomdefinitie en -parameters

De werkstroomdefinitie van uw logische app wordt weergegeven in het definition -object, dat wordt weergegeven in het object in de properties resourcedefinitie van uw logische app. Dit definition object is hetzelfde object dat wordt weergegeven in de codeweergave en volledig wordt beschreven in het onderwerp Schemaverwijzing voor Werkstroomdefinitietaal . Uw werkstroomdefinitie bevat een inner parameters declaration-object waarmee u nieuwe parameters kunt definiëren of bestaande parameters kunt bewerken voor de waarden die tijdens runtime door uw werkstroomdefinitie worden gebruikt. U kunt vervolgens verwijzen naar deze parameters in de trigger of acties in uw werkstroom. Dit object is standaard leeg, parameters tenzij uw logische app verbindingen maakt met andere services en systemen via beheerde connectors.

Als u de waarden voor parameters voor werkstroomdefinities wilt instellen, gebruikt u het parameters object dat zich buiten uw werkstroomdefinitie maar nog steeds in de resourcedefinitie van uw logische app bevinden. In dit buitenste parameters object kunt u vervolgens verwijzen naar de eerder gedeclareerde sjabloonparameters, die waarden kunnen accepteren bij de implementatie van een parameterbestand.

Tip

Als best practice kunt u niet rechtstreeks verwijzen naar sjabloonparameters, die tijdens de implementatie worden geëvalueerd, vanuit de werkstroomdefinitie. Declareer in plaats daarvan een parameter voor de werkstroomdefinitie, die u vervolgens kunt instellen in het object dat zich buiten uw parameters werkstroomdefinitie maar nog steeds binnen de resourcedefinitie van uw logische app bevinden. Zie Verwijzingen naar parameters voor meer informatie.

Deze syntaxis laat zien waar u parameters kunt declareren op zowel het niveau van de sjabloon als de werkstroomdefinitie en waar u deze parameterwaarden kunt instellen door te verwijzen naar de sjabloon- en werkstroomdefinitieparameters:

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

Definitieparameters voor beveiligde werkstroom

Voor een werkstroomdefinitieparameter die gevoelige informatie, wachtwoorden, toegangssleutels of geheimen tijdens runtime verwerkt, declareert of bewerkt u de parameter om het securestring parametertype of secureobject te gebruiken. U kunt verwijzen naar deze parameter in en binnen uw werkstroomdefinitie. Declareer op het hoogste niveau van de sjabloon een parameter met hetzelfde type voor het verwerken van deze informatie tijdens de implementatie.

Als u de waarde voor de parameter voor de werkstroomdefinitie wilt instellen, gebruikt u het parameters object dat zich buiten de werkstroomdefinitie, maar nog steeds in de resourcedefinitie van uw logische app, om te verwijzen naar de sjabloonparameter. Als u ten slotte de waarde wilt doorgeven aan uw sjabloonparameter tijdens de implementatie, slaat u die waarde op in Azure Key Vault en verwijst u naar die sleutelkluis in het parameterbestand dat tijdens de implementatie door uw sjabloon wordt gebruikt.

Deze voorbeeldsjabloon laat zien hoe u deze taken kunt uitvoeren door indien nodig beveiligde parameters te definiëren, zodat u de waarden ervan kunt opslaan in Azure Key Vault:

  • Declareer beveiligde parameters voor de waarden die worden gebruikt voor het verifiëren van toegang.
  • Gebruik deze waarden op zowel het niveau van de sjabloon als de werkstroomdefinitie.
  • Geef deze waarden op met behulp van een parameterbestand.

Sjabloon

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

Parameterbestand

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

Best practices - parameters voor werkstroomdefinities

Volg deze aanbevolen procedures om ervoor te zorgen dat de logic app designer werkstroomdefinitieparameters correct kan weergeven:

Zie Parameters - Workflow Definition Language voor meer informatie over parameters voor werkstroomdefinities.

Definities van verbindingsresources

Wanneer uw logische app verbindingen met andere services en het systeem maakt en gebruikt met behulp van beheerde connectors, bevat het object van resources uw sjabloon de resourcedefinities voor deze verbindingen. Hoewel u verbindingen maakt vanuit een logische app, zijn verbindingen afzonderlijke Azure-resources met hun eigen resourcedefinities. Als u deze definities van verbindingsresources wilt bekijken, downloadt u uw logische app van Azure naar Visual Studio. Dit is de eenvoudigste manier om een geldige sjabloon voor geparameteriseerde logische apps te maken die grotendeels gereed is voor implementatie.

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

Definities van verbindingsresources verwijzen naar de parameters op het hoogste niveau van de sjabloon voor hun waarden, zodat u deze waarden tijdens de implementatie kunt opgeven met behulp van een parameterbestand. Zorg ervoor dat verbindingen dezelfde Azure-resourcegroep en -locatie gebruiken als uw logische app.

Hier volgt een voorbeeld van een resourcedefinitie voor een Office 365 Outlook-verbinding en de bijbehorende sjabloonparameters:

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

De resourcedefinitie van uw logische app werkt ook op de volgende manieren met verbindingsresourcedefinities:

  • Binnen uw werkstroomdefinitie declareert het parameters object een $connections parameter voor de verbindingswaarden die moeten worden gebruikt tijdens de runtime van de logische app. De trigger of actie waarmee een verbinding wordt gemaakt, maakt ook gebruik van de bijbehorende waarden die via deze $connections parameter worden doorgegeven.

  • Buiten de werkstroomdefinitie, maar nog steeds binnen de resourcedefinitie van uw logische app, stelt een ander parameters object de waarden in die tijdens runtime voor de $connections parameter moeten worden gebruikt door te verwijzen naar de bijbehorende sjabloonparameters. Deze waarden gebruiken sjabloonexpressies om te verwijzen naar resources waarin de metagegevens voor de verbindingen in uw logische app veilig worden opgeslagen.

    Metagegevens kunnen bijvoorbeeld verbindingsreeksen en toegangstokens bevatten, die u kunt opslaan in Azure Key Vault. Als u deze waarden wilt doorgeven aan uw sjabloonparameters, verwijst u naar die sleutelkluis in het parameterbestand dat tijdens de implementatie door uw sjabloon wordt gebruikt. Zie Verwijzingen naar parameters verderop in dit onderwerp voor meer informatie over verschillen in het verwijzen naar parameters.

    Wanneer u de werkstroomdefinitie van uw logische app opent in de codeweergave via de Azure Portal of Visual Studio, wordt het $connections object buiten de werkstroomdefinitie weergegeven, maar op hetzelfde niveau. Deze volgorde in de codeweergave maakt het gemakkelijker om naar deze parameters te verwijzen wanneer u de werkstroomdefinitie handmatig bijwerkt:

    {
       "$connections": {<workflow-definition-parameter-connection-values-runtime},
       "definition": {<workflow-definition>}
    }
    
  • De resourcedefinitie van uw logische app bevat een dependsOn -object dat de afhankelijkheden opgeeft van de verbindingen die door uw logische app worden gebruikt.

Elke verbinding die u maakt, heeft een unieke naam in Azure. Wanneer u meerdere verbindingen met dezelfde service of hetzelfde systeem maakt, wordt aan elke verbindingsnaam een getal toegevoegd, dat wordt verhoogd met elke nieuwe verbinding die wordt gemaakt, bijvoorbeeld office365, office365-1, enzovoort.

In dit voorbeeld ziet u de interacties tussen de resourcedefinitie van uw logische app en een verbindingsresourcedefinitie voor 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": {}
}

Beveiligde verbindingsparameters

Voor een verbindingsparameter die gevoelige informatie, wachtwoorden, toegangssleutels of geheimen verwerkt, bevat de resourcedefinitie van de verbinding een parameterValues object dat deze waarden opgeeft in de naam-waardepaarindeling. Als u deze informatie wilt verbergen, kunt u de sjabloonparameters voor deze waarden declareren of bewerken met behulp van de securestring parametertypen of secureobject . U kunt die informatie vervolgens opslaan in Azure Key Vault. Als u deze waarden wilt doorgeven aan uw sjabloonparameters, verwijst u naar die sleutelkluis in het parameterbestand dat tijdens de implementatie door uw sjabloon wordt gebruikt.

Hier volgt een voorbeeld van de accountnaam en toegangssleutel voor een Azure Blob Storage-verbinding:

Parameterbestand

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

Sjabloon

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

Verbindingen verifiëren

Na de implementatie werkt uw logische app end-to-end met geldige parameters. U moet echter nog steeds OAuth-verbindingen autoriseren om geldige toegangstokens te genereren voor het verifiëren van uw referenties. Zie OAuth-verbindingen autoriseren voor meer informatie.

Sommige verbindingen ondersteunen het gebruik van een service-principal van Azure Active Directory (Azure AD) om verbindingen te autoriseren voor een logische app die is geregistreerd in Azure AD. Deze definitie van de Azure Data Lake-verbindingsresource laat bijvoorbeeld zien hoe u verwijst naar de sjabloonparameters die de informatie van de service-principal verwerken en hoe de sjabloon deze parameters declareert:

Definitie van verbindingsresource

{
   <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')]"
      }
   }
}
Kenmerk Beschrijving
token:clientId De toepassings- of client-id die is gekoppeld aan uw service-principal
token:clientSecret De sleutelwaarde die is gekoppeld aan uw service-principal
token:TenantId De map-id voor uw Azure AD-tenant
token:grantType Het aangevraagde toekenningstype, dat moet zijn client_credentials. Zie Microsoft identity platform en de OAuth 2.0-clientreferentiestroom voor meer informatie.

Sjabloonparameterdefinities

Het object op het hoogste niveau parameters van de sjabloon declareert deze parameters voor de voorbeeldverbinding:

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

Zie de volgende onderwerpen voor meer informatie over het werken met service-principals:

Verwijzingen naar parameters

Als u wilt verwijzen naar sjabloonparameters, kunt u sjabloonexpressies gebruiken met sjabloonfuncties, die worden geëvalueerd tijdens de implementatie. Sjabloonexpressies gebruiken vierkante haken ([]):

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

Als u wilt verwijzen naar parameters voor werkstroomdefinitiedefinities, gebruikt u expressies en functies van de werkstroomdefinitietaal, die tijdens runtime worden geëvalueerd. Mogelijk ziet u dat sommige sjabloonfuncties en werkstroomdefinitiefuncties dezelfde naam hebben. Werkstroomdefinitieexpressies beginnen met het symbool 'at' (@):

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

U kunt sjabloonparameterwaarden doorgeven aan uw werkstroomdefinitie zodat uw logische app tijdens runtime kan worden gebruikt. Vermijd echter het gebruik van sjabloonparameters, expressies en syntaxis in uw werkstroomdefinitie, omdat logic app designer geen ondersteuning biedt voor sjabloonelementen. Bovendien kunnen sjabloonsyntaxis en expressies uw code ingewikkelder maken vanwege verschillen in wanneer expressies worden geëvalueerd.

Volg in plaats daarvan deze algemene stappen om de werkstroomdefinitieparameters die tijdens runtime moeten worden gebruikt, te declareren en te verwijzen naar de sjabloonparameters die moeten worden gebruikt bij de implementatie en om de waarden op te geven die moeten worden doorgegeven bij de implementatie met behulp van een parameterbestand. Zie de sectie Werkstroomdefinitie en -parameters eerder in dit onderwerp voor meer informatie.

  1. Maak uw sjabloon en declareer de sjabloonparameters voor de waarden die moeten worden geaccepteerd en gebruikt bij de implementatie.

  2. Declareer in uw werkstroomdefinitie de parameters voor de waarden die moeten worden geaccepteerd en gebruikt tijdens runtime. U kunt vervolgens verwijzen naar deze waarden in en binnen uw werkstroomdefinitie.

  3. Stel in het object dat zich buiten de parameters werkstroomdefinitie bevindt, maar nog steeds binnen de resourcedefinitie van uw logische app, de waarden voor de parameters voor de definitie van de werkstroom in door te verwijzen naar de bijbehorende sjabloonparameters. Op die manier kunt u sjabloonparameterwaarden doorgeven aan uw werkstroomdefinitieparameters.

  4. Geef in het parameterbestand de waarden op voor de sjabloon die moeten worden gebruikt bij de implementatie.

Volledig voorbeeldsjabloon

Dit is de voorbeeldsjabloon met parameters die wordt gebruikt door de voorbeelden van dit onderwerp:

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

Volgende stappen