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

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 infrastrukturen, resurser, parametrar och annan information för att etablera och distribuera logikappen. Genom att definiera parametrar för värden som varierar vid distribution, ä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. I scenarier där du har parametervärden som är känsliga eller som måste skyddas, till exempel lösenord och hemligheter, kan du lagra dessa värden i Azure Key Vault och få parameterfilen att hämta dessa värden. I dessa scenarier skulle du dock omdistribuera för att hämta de aktuella värdena.

I den här översikten beskrivs 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 även följer schemat för språket för arbetsflödesdefinition. Malluttryck och arbetsflödesdefinitionsuttryck 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 parametriserad logikappmall som främst är redo för distribution är att använda Visual Studio (kostnadsfri Community Edition eller högre) och Azure Logic Apps Tools for 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.

Du kan också 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-postmeddelandet 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 finns i följande avsnitt:

Information om mallresurser som är specifika för logikappar, integrationskonton, integrationskontoartefakter och integrationstjänstmiljöer finns i Resurstyper för Microsoft.Logic.

Exempel på mallar för logikapp finns i följande exempel:

Börja Logic Apps REST API översikten för Azure Logic Apps REST API .

Mallstruktur

På den översta nivån följer en Resource Manager den här strukturen, vilket beskrivs fullständigt i Azure Resource Manager och syntaxavsnittet:

{
   "$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 följande 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. Dessa parametrar accepterar till exempel värdena för logikappens namn och plats, anslutningar och andra resurser som krävs för distribution. Du kan lagra dessa parametervärden i en parameterfil, som beskrivs senare i det här avsnittet. Allmän information finns i Parameters - Resource Manager template structure and 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 fallkä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 godkännas och användas vid distribution när du skapar och distribuerar resurser i Azure, till exempel:

  • Logikappen

  • Anslutningar som logiken 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 integrationskonto för B2B-scenarier (business-to-business) deklarerar mallens objekt på den översta nivån den parameter som accepterar resurs-ID:t för det parameters integrationskontot.

Här är den allmänna strukturen och syntaxen för en parameterdefinition, vilket helt beskrivs av Parameters - Resource Manager template structure and 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 för parametrar som hanterar värden som är känsliga eller som måste skyddas, till exempel användarnamn, lösenord och hemligheter, innehåller alla dessa parametrar attribut, även om standardvärdena i vissa fall är defaultValue tomma värden. De distributionsvärden som ska användas för dessa mallparametrar tillhandahålls av exempelparameterfilen 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 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ödesdefinition 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 parametrar för arbetsflödesdefinition använder du objektet som ligger utanför arbetsflödesdefinitionen men fortfarande i parameters logikappens resursdefinition. I det här parameters yttre 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 annan 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 är några metodtips för att definiera parametrar:

  • Deklarera endast parametrar 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.

  • Inkludera defaultValue -attributet, som kan ange tomma värden, för alla parametrar utom värden som är känsliga eller som 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 riktlinjerna i följande avsnitt:

  • Om du vill skilja mellan mallparameternamn och 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.

Mallparameterfil

Om du vill ange värden 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 logikappmall: < logic-app-name>.jspå
  • Parameterfilnamn: < logic-app-name>.parameters.jspå

Här är strukturen i parameterfilen, som innehåller en nyckelvalvsreferens 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 exempelparameterfilen anger värdena för mallparametrarna som deklarerades 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 -objekt, som är en matris som innehåller definitioner för varje resurs som ska skapas och distribueras i Azure, till exempel logikappens resources 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 Visual Studio uppmanas du att ange vilken logikapp som du vill öppna. Dessutom kan ditt Azure-resursgruppsprojekt innehålla fler än en mall, så se till att du väljer rätt parameterfil när du uppmanas till 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 parametriserad 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ödet 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 integrationskonto som används av logikappen
  • 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 konfigurationsinställningar för körning och så vidare
{
   "$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": "2016-06-01",
         "dependsOn": [
         ]
      }
      // End logic app resource definition
   ],
   "outputs": {}
}

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

Attribut Krävs Typ Beskrivning
state Ja Sträng Logikappens tillstånd vid distribution där innebär Enabled att logikappen är live Disabled och innebär att logikappen är inaktiv. Om du till exempel inte är redo för logikappen att gå live men vill distribuera en utkastversion kan du använda Disabled alternativet .
integrationAccount No Objekt Om logikappen 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 id integrationskontot.
definition Yes 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 körning av logikappen. 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 med hjälp av ett verktyg som Azure Resource Explorer.

parameters No Objekt Parametervärdena för arbetsflödesdefinition som ska användas vid körning av logikappen. Parameterdefinitionerna för dessa värden visas i arbetsflödesdefinitionens parameterobjekt. Om logikappen använder hanterade anslutningsappar för åtkomst till andra tjänster och system innehåller det här objektet dessutom ett -objekt som anger de anslutningsvärden som ska $connections användas vid körning.
accessControl No Objekt För att ange säkerhetsattribut för logikappen, till exempel begränsa IP-åtkomsten till begärandeutlösare eller indata och utdata för körningshistorik. Mer information finns i Säker åtkomst till logikappar.
runtimeConfiguration No Objekt För att ange operationOptions egenskaper 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 finns i Resurstyper för Microsoft.Logic:

Arbetsflödesdefinition och parametrar

Logikappens arbetsflödesdefinition visas i definition -objektet, som visas i properties objektet i logikappens resursdefinition. Det definition här objektet är samma objekt som visas i kodvyn och beskrivs fullständigt i avsnittet Schemareferens för språket för arbetsflödesdefinition. Arbetsflödesdefinitionen innehåller ett inre deklarationsobjekt där du kan definiera nya eller redigera befintliga parametrar för de värden som används av parameters arbetsflödesdefinitionen vid körning. Du kan sedan referera till dessa parametrar inuti 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 som ligger utanför arbetsflödesdefinitionen men fortfarande i parameters logikappens resursdefinition. I det här parameters yttre objektet kan du sedan referera till dina tidigare deklarerade mallparametrar, som kan acceptera värden vid distributionen från en parameterfil.

Tips

Bästa praxis är att inte referera till mallparametrar direkt, som utvärderas vid distribution, inifrån arbetsflödesdefinitionen. Deklarera i stället en parameter för arbetsflödesdefinition, som du sedan kan ange i objektet som ligger utanför arbetsflödesdefinitionen men fortfarande i parameters 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å tillsammans med där du kan ange dessa parametervärden genom att referera till parametrarna för mallen och arbetsflödesdefinitionen:

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

Säkra definitionsparametrar för arbetsflöden

För en parameter för arbetsflödesdefinition som hanterar känslig information, lösenord, åtkomstnycklar eller hemligheter vid körning deklarerar eller redigerar du parametern för att använda securestring secureobject parametertypen eller . 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 arbetsflödesdefinitionsparametern använder du objektet som ligger utanför arbetsflödesdefinitionen men fortfarande i logikappens resursdefinition för att referera parameters till mallparametern. Slutligen, för att 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 när det behövs 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 Logikappdesignern korrekt kan visa parametrar för arbetsflödesdefinition:

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

Definitioner för anslutningsresurs

När logikappen skapar och använder anslutningar till andra tjänster och system med hjälp av hanterade anslutningsappar innehåller mallens-objekt 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 definitionerna för anslutningsresursen laddar du ned logikappen 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 Office 365 Outlook en 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 anslutningsvärdena som ska användas vid körning av logikappen. 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 objekt de värden som ska användas vid körning för parametern genom att referera till motsvarande parameters $connections 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 visas objektet utanför $connections 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-1 , och så vidare.

Det här exemplet visar interaktionerna mellan logikappens resursdefinition och en definition för anslutningsresurs 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 -objekt som anger dessa värden i parameterValues 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 securestring secureobject parametertyperna eller . 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 innehå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": "2016-06-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 start till slut 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 Azure Active Directory tjänsthuvudnamn (Azure AD) för att auktorisera anslutningar för en logikapp som är registrerad i Azure AD. Den här resursdefinitionen för Azure Data Lake-anslutning visar till exempel hur du refererar till mallparametrarna som hanterar information om tjänstens huvudnamn 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 parameters nivån 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 medmallfunktioner , som utvärderas vid distributionen. Malluttryck använder hakparenteser ([]):

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

Om du vill referera till parametrar för arbetsflödesdefinition använder duuttryck och funktioner för språket för arbetsflödesdefinition, som utvärderas vid körning. Du kanske märker att vissa mallfunktioner och funktioner för arbetsflödesdefinition har samma namn. Uttryck för arbetsflödesdefinition börjar med symbolen "at" ( @ ):

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

Du kan skicka mallparametervärden till arbetsflödesdefinitionen som logikappen ska använda vid körning. Undvik dock att använda mallparametrar, uttryck och syntax i arbetsflödesdefinitionen eftersom Logikappdesignern 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 dessa allmänna steg för att deklarera och referera till parametrarna för arbetsflödesdefinitionen 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 överföras 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 godkännas och användas vid distributionen.

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

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

  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": "2016-06-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