Översikt: Automatisera distributionen för Azure Logic Apps med hjälp av Azure Resource Manager-mallar

Gäller för: Azure Logic Apps (förbrukning)

När du är redo att automatisera skapandet och distributionen av logikappen kan du expandera logikappens underliggande arbetsflödesdefinition till en Azure Resource Manager-mall. Den här mallen definierar infrastruktur, resurser, parametrar och annan information för att etablera och distribuera logikappen. Genom att definiera parametrar för värden som varierar vid distributionen, även kallat parameterisering, kan du upprepade gånger och konsekvent distribuera logikappar baserat på olika distributionsbehov.

Om du till exempel distribuerar till miljöer för utveckling, testning och produktion använder du förmodligen olika anslutningssträngar för varje miljö. Du kan deklarera mallparametrar som accepterar olika anslutningssträngar och sedan lagra dessa strängar i en separat parameterfil. På så sätt kan du ändra dessa värden utan att behöva uppdatera och distribuera om mallen. För scenarier där du har parametervärden som är känsliga eller måste skyddas, till exempel lösenord och hemligheter, kan du lagra dessa värden i Azure Key Vault och låta parameterfilen hämta dessa värden. Men i de här scenarierna distribuerar du om för att hämta de aktuella värdena.

Den här översikten beskriver attributen i en Resource Manager mall som innehåller en arbetsflödesdefinition för logikappen. Både mallen och arbetsflödesdefinitionen använder JSON-syntax, men det finns vissa skillnader eftersom arbetsflödesdefinitionen också följer schemat Arbetsflödesdefinitionsspråk. Malluttryck och definitionsuttryck för arbetsflöden skiljer sig till exempel åt i hur de refererar till parametrar och de värden som de kan acceptera.

Tips

Det enklaste sättet att få en giltig parameteriserad logikappmall som främst är redo för distribution är att använda Visual Studio (kostnadsfri Community Edition eller senare) och Azure Logic Apps Tools för Visual Studio. Du kan sedan antingen skapa logikappen i Visual Studio eller hitta och ladda ned en befintlig logikapp från Azure till Visual Studio.

Eller så kan du skapa logikappmallar med hjälp av Azure PowerShell med LogicAppTemplate-modulen.

Exempellogikappen i det här avsnittet använder en Office 365 Outlook-utlösare som utlöses när ett nytt e-postmeddelande kommer och en Azure Blob Storage åtgärd som skapar en blob för e-posttexten och laddar upp bloben till en Azure Storage-container. Exemplen visar också hur du parameteriserar värden som varierar vid distribution.

Mer information om Resource Manager mallar finns i följande avsnitt:

Information om mallresurser som är specifik för logikappar, integrationskonton, integrationskontotefakter och integreringstjänstmiljöer finns i Microsoft.Logic-resurstyper.

Exempel på logikappmallar finns i följande exempel:

För Logic Apps REST API börjar du med översikten över Rest-API:et för Azure Logic Apps.

Mallstruktur

På den översta nivån följer en Resource Manager mall den här strukturen, som beskrivs fullständigt i avsnittet om Mallstruktur och syntax i 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": {}
}

För en logikappmall arbetar du främst med dessa mallobjekt:

Attribut Beskrivning
parameters Deklarerar mallparametrarna för att acceptera de värden som ska användas när du skapar och anpassar resurser för distribution i Azure. De här parametrarna accepterar till exempel värdena för logikappens namn och plats, anslutningar och andra resurser som krävs för distributionen. Du kan lagra dessa parametervärden i en parameterfil, som beskrivs senare i det här avsnittet. Allmän information finns i Parametrar – Resource Manager mallstruktur och syntax.
resources Definierar de resurser som ska skapas eller uppdateras och distribueras till en Azure-resursgrupp, till exempel din logikapp, anslutningar, Azure Storage-konton och så vidare. Allmän information finns i Resurser – Resource Manager mallstruktur och syntax.

Logikappmallen använder det här filnamnsformatet:

<logic-app-name>. Json

Viktigt

Mallsyntaxen är skiftlägeskänslig så se till att du använder konsekvent hölje.

Mallparametrar

En logikappmall har flera parameters objekt som finns på olika nivåer och utför olika funktioner. På den översta nivån kan du till exempel deklarera mallparametrar för de värden som ska accepteras och användas vid distribution när du skapar och distribuerar resurser i Azure, till exempel:

  • Din logikapp

  • Anslutningar som logikappen använder för att få åtkomst till andra tjänster och system via hanterade anslutningsappar

  • Andra resurser som logikappen behöver för distribution

    Om logikappen till exempel använder ett integreringskonto för B2B-scenarier (business-to-business) deklarerar mallens objekt på den översta nivån parameters parametern som accepterar resurs-ID:t för det integrationskontot.

Här är den allmänna strukturen och syntaxen för en parameterdefinition, som beskrivs fullständigt av Parametrar – Resource Manager mallstruktur och syntax:

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

Det här exemplet visar bara mallparametrarna för de värden som används för att skapa och distribuera dessa resurser i Azure:

  • Namn och plats för logikappen
  • ID som ska användas för ett integrationskonto som är länkat till logikappen
{
   "$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": {}
}

Förutom parametrar som hanterar värden som är känsliga eller måste skyddas, till exempel användarnamn, lösenord och hemligheter, innehåller defaultValue alla dessa parametrar attribut, men i vissa fall är standardvärdena tomma värden. De distributionsvärden som ska användas för dessa mallparametrar tillhandahålls av exempelparametrarfilen som beskrivs senare i det här avsnittet.

Mer information om hur du skyddar mallparametrar finns i följande avsnitt:

Andra mallobjekt refererar ofta till mallparametrar så att de kan använda de värden som passerar genom mallparametrar, till exempel:

  • Mallens resursobjekt, som beskrivs senare i det här avsnittet, definierar varje resurs i Azure som du vill skapa och distribuera, till exempel logikappens resursdefinition. Dessa resurser använder ofta mallparametervärden, till exempel logikappens namn, plats och anslutningsinformation.

  • På en djupare nivå i logikappens resursdefinition deklarerar arbetsflödesdefinitionens parameterobjekt parametrar för de värden som ska användas vid logikappens körning. Du kan till exempel deklarera parametrar för arbetsflödesdefinitioner för det användarnamn och lösenord som en HTTP-utlösare använder för autentisering. Om du vill ange värden för arbetsflödesdefinitionsparametrar använder du objektet parameters som är utanför arbetsflödesdefinitionen men som fortfarande finns i logikappens resursdefinition. I det här yttre parameters objektet kan du referera till tidigare deklarerade mallparametrar, som kan acceptera värden vid distribution från en parameterfil.

När du refererar till parametrar använder malluttryck och funktioner olika syntax och beter sig annorlunda än uttryck och funktioner för arbetsflödesdefinitioner. Mer information om dessa skillnader finns i Referenser till parametrar senare i det här avsnittet.

Metodtips – mallparametrar

Här följer några metodtips för att definiera parametrar:

  • Deklarera parametrar endast för värden som varierar beroende på dina distributionsbehov. Deklarera inte parametrar för värden som förblir desamma för olika distributionskrav.

  • defaultValue Inkludera attributet, som kan ange tomma värden, för alla parametrar förutom värden som är känsliga eller måste skyddas. Använd alltid skyddade parametrar för användarnamn, lösenord och hemligheter. Om du vill dölja eller skydda känsliga parametervärden följer du anvisningarna i följande avsnitt:

  • Om du vill skilja mallparameternamn från parameternamn för arbetsflödesdefinitioner kan du använda beskrivande mallparameternamn, till exempel: TemplateFabrikamPassword

Mer metodtips för mallar finns i Metodtips för mallparametrar.

Mallparametrar-fil

Om du vill ange värdena för mallparametrar lagrar du dessa värden i en parameterfil. På så sätt kan du använda olika parameterfiler baserat på dina distributionsbehov. Här är filnamnsformatet som ska användas:

  • Filnamn för logikappsmall: <logic-app-name.json>
  • Filnamn för parametrar: <logic-app-name.parameters.json>

Här är strukturen i parameterfilen, som innehåller en referens för nyckelvalvet för att skicka ett skyddat parametervärde med 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>
   }
}

Den här exempelparametrarfilen anger värdena för de mallparametrar som deklarerats tidigare i det här avsnittet:

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

Mallresurser

Mallen har ett resources -objekt, som är en matris som innehåller definitioner för varje resurs som ska skapas och distribueras i Azure, till exempel logikappens resursdefinition, anslutningsresursdefinitioner och andra resurser som logikappen behöver för distribution.

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

Anteckning

Mallar kan innehålla resursdefinitioner för flera logikappar, så se till att alla dina logikappresurser anger samma Azure-resursgrupp. När du distribuerar mallen till en Azure-resursgrupp med hjälp av Visual Studio uppmanas du att ange vilken logikapp som du vill öppna. Dessutom kan ditt Azure-resursgruppsprojekt innehålla mer än en mall, så se till att du väljer rätt parameterfil när du uppmanas att göra det.

Visa resursdefinitioner

Om du vill granska resursdefinitionerna för alla resurser i en Azure-resursgrupp laddar du ned logikappen från Azure till Visual Studio, vilket är det enklaste sättet att skapa en giltig parameteriserad logikappmall som främst är redo för distribution.

Allmän information om mallresurser och deras attribut finns i följande avsnitt:

Resursdefinition för logikapp

Logikappens resursdefinition för arbetsflöde i en mall börjar med properties -objektet, som innehåller den här informationen:

  • Logikappens tillstånd vid distribution
  • ID:t för alla integrationskonton som används av din logikapp
  • Logikappens arbetsflödesdefinition
  • Ett parameters objekt som anger de värden som ska användas vid körning
  • Annan resursinformation om logikappen, till exempel namn, typ, plats, eventuella körningskonfigurationsinställningar osv.
{
   "$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": {}
}

Här är de attribut som är specifika för din logikapps resursdefinition:

Attribut Krävs Typ Beskrivning
state Ja Sträng Logikappens tillstånd vid distributionen innebär Enabled att logikappen är live och Disabled innebär att logikappen är inaktiv. Om du till exempel inte är redo att aktivera logikappen Disabled men vill distribuera ett utkast kan du använda alternativet .
integrationAccount Nej Objekt Om logikappen id använder ett integrationskonto som lagrar artefakter för B2B-scenarier (business-to-business) innehåller det här objektet attributet som anger ID:t för integrationskontot.
definition Ja Objekt Logikappens underliggande arbetsflödesdefinition, som är samma objekt som visas i kodvyn och som beskrivs fullständigt i avsnittet Schemareferens för arbetsflödesdefinitionsspråk . I den här arbetsflödesdefinitionen parameters deklarerar objektet parametrar för de värden som ska användas vid logic app runtime. Mer information finns i Arbetsflödesdefinition och parametrar.

Om du vill visa attributen i logikappens arbetsflödesdefinition växlar du från "designvy" till "kodvy" i Azure Portal eller Visual Studio, eller genom att använda ett verktyg som Azure Resource Explorer.

parameters Inga Objekt Parametervärdena för arbetsflödesdefinitionen som ska användas vid logic app-körning. Parameterdefinitionerna för dessa värden visas i arbetsflödesdefinitionens parameterobjekt. Om logikappen dessutom använder hanterade anslutningsappar för att komma åt andra tjänster och system innehåller det här objektet ett $connections objekt som anger anslutningsvärdena som ska användas vid körning.
accessControl Inga Objekt För att ange säkerhetsattribut för logikappen, till exempel begränsa IP-åtkomst till begärandeutlösare eller indata och utdata för körningshistorik. Mer information finns i Säker åtkomst till logikappar.
runtimeConfiguration Inga Objekt För att ange egenskaper operationOptions som styr hur logikappen beter sig vid körning. Du kan till exempel köra logikappen i läget för högt dataflöde.

Mer information om resursdefinitioner för dessa Logic Apps-objekt finns i Microsoft.Logic-resurstyper:

Arbetsflödesdefinition och parametrar

Logikappens arbetsflödesdefinition visas i definition -objektet, som visas i objektet i logikappens properties resursdefinition. Det här definition objektet är samma objekt som visas i kodvyn och beskrivs fullständigt i avsnittet Schemareferens för arbetsflödesdefinitionsspråk . Arbetsflödesdefinitionen innehåller ett inre parameters deklarationsobjekt där du kan definiera nya eller redigera befintliga parametrar för de värden som används av arbetsflödesdefinitionen vid körning. Du kan sedan referera till dessa parametrar i utlösaren eller åtgärderna i arbetsflödet. Som standard är det här parameters objektet tomt om inte logikappen skapar anslutningar till andra tjänster och system via hanterade anslutningsappar.

Om du vill ange värden för parametrar för arbetsflödesdefinition använder du objektet parameters som ligger utanför arbetsflödesdefinitionen men som fortfarande finns i logikappens resursdefinition. I det här yttre parameters objektet kan du sedan referera till dina tidigare deklarerade mallparametrar, som kan acceptera värden vid distribution från en parameterfil.

Tips

Vi rekommenderar att du inte direkt refererar till mallparametrar, som utvärderas vid distributionen, inifrån arbetsflödesdefinitionen. Deklarera i stället en definitionsparameter för arbetsflödet, som du sedan kan ange i parameters objektet som ligger utanför arbetsflödesdefinitionen men som fortfarande finns i logikappens resursdefinition. Mer information finns i Referenser till parametrar.

Den här syntaxen visar var du kan deklarera parametrar på både mall- och arbetsflödesdefinitionsnivåer samt var du kan ange dessa parametervärden genom att referera till mall- och arbetsflödesdefinitionsparametrarna:

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

Parametrar för säker arbetsflödesdefinition

För en definitionsparameter för arbetsflödet som hanterar känslig information, lösenord, åtkomstnycklar eller hemligheter vid körning deklarerar eller redigerar du parametern för att använda securestring parametertypen eller secureobject . Du kan referera till den här parametern i hela och inom arbetsflödesdefinitionen. På mallens översta nivå deklarerar du en parameter som har samma typ för att hantera den här informationen vid distributionen.

Om du vill ange värdet för parametern för arbetsflödesdefinitionen använder du objektet parameters som ligger utanför arbetsflödesdefinitionen men som fortfarande finns i logikappens resursdefinition för att referera till mallparametern. För att slutligen skicka värdet till mallparametern vid distributionen lagrar du värdet i Azure Key Vault och refererar till nyckelvalvet i parameterfilen som används av mallen vid distributionen.

Den här exempelmallen visar hur du kan utföra dessa uppgifter genom att definiera skyddade parametrar vid behov så att du kan lagra deras värden i Azure Key Vault:

  • Deklarera skyddade parametrar för de värden som används för att autentisera åtkomst.
  • Använd dessa värden på både mall- och arbetsflödesdefinitionsnivå.
  • Ange dessa värden med hjälp av en parameterfil.

Mall

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

Parameterfil

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

Metodtips – parametrar för arbetsflödesdefinition

Följ dessa metodtips för att se till att Logic App Designer kan visa arbetsflödesdefinitionsparametrar på rätt sätt:

Mer information om parametrar för arbetsflödesdefinitioner finns i Parametrar – Definitionsspråk för arbetsflöde.

Anslutningsresursdefinitioner

När logikappen skapar och använder anslutningar till andra tjänster och system med hjälp av hanterade anslutningsappar innehåller mallobjektet resources resursdefinitionerna för dessa anslutningar. Även om du skapar anslutningar inifrån en logikapp är anslutningar separata Azure-resurser med egna resursdefinitioner. Om du vill granska dessa definitioner för anslutningsresurser laddar du ned din logikapp från Azure till Visual Studio, vilket är det enklaste sättet att skapa en giltig parametriserad logikappmall som är mest redo för distribution.

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

Anslutningsresursdefinitioner refererar till mallens toppnivåparametrar för deras värden så att du kan ange dessa värden vid distributionen med hjälp av en parameterfil. Se till att anslutningarna använder samma Azure-resursgrupp och plats som logikappen.

Här är ett exempel på en resursdefinition för en Office 365 Outlook-anslutning och motsvarande mallparametrar:

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

Logikappens resursdefinition fungerar också med anslutningsresursdefinitioner på följande sätt:

  • I arbetsflödesdefinitionen parameters deklarerar objektet en $connections parameter för de anslutningsvärden som ska användas vid logic app runtime. Dessutom använder utlösaren eller åtgärden som skapar en anslutning motsvarande värden som passerar genom den här $connections parametern.

  • Utanför arbetsflödesdefinitionen men fortfarande i logikappens resursdefinition anger ett annat parameters objekt de värden som ska användas vid körning för parametern $connections genom att referera till motsvarande mallparametrar. Dessa värden använder malluttryck för att referera till resurser som lagrar metadata för anslutningarna i logikappen på ett säkert sätt.

    Metadata kan till exempel innehålla anslutningssträngar och åtkomsttoken, som du kan lagra i Azure Key Vault. Om du vill skicka dessa värden till mallparametrarna refererar du till nyckelvalvet i parameterfilen som används av mallen vid distributionen. Mer information om skillnader i referensparametrar finns i Referenser till parametrar senare i det här avsnittet.

    När du öppnar logikappens arbetsflödesdefinition i kodvyn via Azure Portal eller Visual Studio $connections visas objektet utanför arbetsflödesdefinitionen men på samma nivå. Den här ordningen i kodvyn gör dessa parametrar enklare att referera till när du uppdaterar arbetsflödesdefinitionen manuellt:

    {
       "$connections": {<workflow-definition-parameter-connection-values-runtime},
       "definition": {<workflow-definition>}
    }
    
  • Logikappens resursdefinition har ett dependsOn -objekt som anger beroenden för de anslutningar som används av logikappen.

Varje anslutning som du skapar har ett unikt namn i Azure. När du skapar flera anslutningar till samma tjänst eller system läggs varje anslutningsnamn till med ett tal, vilket ökar med varje ny anslutning som skapas, till exempel office365, office365-1och så vidare.

Det här exemplet visar interaktionerna mellan logikappens resursdefinition och en anslutningsresursdefinition för 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": {}
}

Säkra anslutningsparametrar

För en anslutningsparameter som hanterar känslig information, lösenord, åtkomstnycklar eller hemligheter innehåller anslutningens resursdefinition ett parameterValues objekt som anger dessa värden i namn/värde-parformat. Om du vill dölja den här informationen kan du deklarera eller redigera mallparametrarna för dessa värden med hjälp av parametertyperna securestring eller secureobject . Du kan sedan lagra informationen i Azure Key Vault. Om du vill skicka dessa värden till mallparametrarna refererar du till nyckelvalvet i parameterfilen som används av mallen vid distributionen.

Här är ett exempel som tillhandahåller kontonamnet och åtkomstnyckeln för en Azure Blob Storage-anslutning:

Parameterfil

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

Mall

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

Autentisera anslutningar

Efter distributionen fungerar logikappen från slutpunkt till slutpunkt med giltiga parametrar. Du måste dock fortfarande auktorisera OAuth-anslutningar för att generera giltiga åtkomsttoken för autentisering av dina autentiseringsuppgifter. Mer information finns i Auktorisera OAuth-anslutningar.

Vissa anslutningar stöder användning av ett tjänsthuvudnamn för Azure Active Directory (Azure AD) för att auktorisera anslutningar för en logikapp som är registrerad i Azure AD. Den här azure Data Lake-anslutningsresursdefinitionen visar till exempel hur du refererar till mallparametrarna som hanterar tjänstens huvudnamns information och hur mallen deklarerar dessa parametrar:

Definition av anslutningsresurs

{
   <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')]"
      }
   }
}
Attribut Beskrivning
token:clientId Programmet eller klient-ID:t som är associerat med tjänstens huvudnamn
token:clientSecret Nyckelvärdet som är associerat med tjänstens huvudnamn
token:TenantId Katalog-ID för din Azure AD klientorganisation
token:grantType Den begärda beviljandetypen, som måste vara client_credentials. Mer information finns i Microsofts identitetsplattform och flödet för OAuth 2.0-klientautentiseringsuppgifter.

Mallparameterdefinitioner

Mallens objekt på den översta nivån parameters deklarerar dessa parametrar för exempelanslutningen:

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

Mer information om hur du arbetar med tjänstens huvudnamn finns i följande avsnitt:

Referenser till parametrar

Om du vill referera till mallparametrar kan du använda malluttryck med mallfunktioner som utvärderas vid distributionen. Malluttryck använder hakparenteser ([]):

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

Om du vill referera till definitionsparametrar för arbetsflöden använder du uttryck och funktioner för arbetsflödesdefinitionsspråk, som utvärderas vid körning. Du kanske märker att vissa mallfunktioner och definitionsfunktioner för arbetsflöden har samma namn. Arbetsflödesdefinitionsuttryck börjar med symbolen "at" (@):

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

Du kan skicka mallparametervärden till arbetsflödesdefinitionen för logikappen som ska användas vid körning. Undvik dock att använda mallparametrar, uttryck och syntax i arbetsflödesdefinitionen eftersom Logic App Designer inte stöder mallelement. Dessutom kan mallsyntax och uttryck komplicera koden på grund av skillnader i när uttryck utvärderas.

Följ i stället de här allmänna stegen för att deklarera och referera till arbetsflödesdefinitionsparametrarna som ska användas vid körning, deklarera och referera till mallparametrarna som ska användas vid distributionen och ange de värden som ska skickas vid distributionen med hjälp av en parameterfil. Fullständig information finns i avsnittet Arbetsflödesdefinition och parametrar tidigare i det här avsnittet.

  1. Skapa mallen och deklarera mallparametrarna för de värden som ska accepteras och användas vid distributionen.

  2. I arbetsflödesdefinitionen deklarerar du parametrarna för de värden som ska accepteras och användas vid körning. Du kan sedan referera till dessa värden i hela och inom arbetsflödesdefinitionen.

  3. I objektet parameters som ligger utanför arbetsflödesdefinitionen men fortfarande finns i logikappens resursdefinition anger du värdena för parametrarna för arbetsflödesdefinitionen genom att referera till motsvarande mallparametrar. På så sätt kan du skicka mallparametervärden till definitionsparametrarna för arbetsflödet.

  4. I parameterfilen anger du värdena för mallen som ska användas vid distributionen.

Fullständig exempelmall

Här är den parametriserade exempelmallen som används av det här avsnittets exempel:

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

Nästa steg