Omówienie: Automatyzowanie wdrażania usługi Azure Logic Apps przy użyciu szablonów usługi Azure Resource Manager

Dotyczy: Azure Logic Apps (zużycie)

Gdy wszystko będzie gotowe do zautomatyzowania tworzenia i wdrażania aplikacji logiki, możesz rozszerzyć podstawową definicję przepływu pracy aplikacji logiki do szablonu usługi Azure Resource Manager. Ten szablon definiuje infrastrukturę, zasoby, parametry i inne informacje dotyczące aprowizacji i wdrażania aplikacji logiki. Definiując parametry dla wartości, które różnią się we wdrożeniu, znane również jako parametryzacja, można wielokrotnie i spójnie wdrażać aplikacje logiki na podstawie różnych potrzeb wdrażania.

Jeśli na przykład wdrażasz w środowiskach na potrzeby programowania, testowania i produkcji, prawdopodobnie użyjesz różnych parametrów połączenia dla każdego środowiska. Parametry szablonu można zadeklarować, które akceptują różne parametry połączenia, a następnie przechowywać te parametry w osobnym pliku parametrów. W ten sposób można zmienić te wartości bez konieczności aktualizowania i ponownego wdrażania szablonu. W przypadku scenariuszy, w których wartości parametrów są poufne lub muszą być zabezpieczone, takie jak hasła i wpisy tajne, można przechowywać te wartości na platformie Azure Key Vault i pobierać te wartości. Jednak w tych scenariuszach należy ponownie wdrożyć, aby pobrać bieżące wartości.

W tym omówieniu opisano atrybuty w szablonie Resource Manager, który zawiera definicję przepływu pracy aplikacji logiki. Zarówno szablon, jak i definicja przepływu pracy używają składni JSON, ale istnieją pewne różnice, ponieważ definicja przepływu pracy jest również zgodna ze schematem języka definicji przepływu pracy. Na przykład wyrażenia szablonu i wyrażenia definicji przepływu pracy różnią się w sposobie, w jaki odwołują się do parametrów i wartości, które mogą akceptować.

Porada

Najprostszym sposobem uzyskania prawidłowego sparametryzowanego szablonu aplikacji logiki, który jest głównie gotowy do wdrożenia, użyj programu Visual Studio (bezpłatna wersja Community lub nowsza) oraz narzędzi Azure Logic Apps Tools for Visual Studio. Następnie możesz utworzyć aplikację logiki w programie Visual Studio lub pobrać istniejącą aplikację logiki z platformy Azure do programu Visual Studio.

Możesz też utworzyć szablony aplikacji logiki przy użyciu Azure PowerShell z modułem LogicAppTemplate.

Przykładowa aplikacja logiki w tym temacie używa wyzwalacza Office 365 Outlook, który jest uruchamiany po nadejściu nowej wiadomości e-mail i akcji Azure Blob Storage, która tworzy obiekt blob dla treści wiadomości e-mail i przekazuje ten obiekt blob do kontenera usługi Azure Storage. W przykładach pokazano również, jak sparametryzować wartości, które różnią się we wdrożeniu.

Aby uzyskać więcej informacji na temat szablonów Resource Manager, zobacz następujące tematy:

Aby uzyskać informacje o zasobie szablonu specyficzne dla aplikacji logiki, kont integracji, artefaktów konta integracji i środowisk usługi integracji, zobacz Typy zasobów Microsoft.Logic.

Przykładowe szablony aplikacji logiki można znaleźć w następujących przykładach:

W przypadku interfejsu API REST usługi Logic Apps zacznij od omówienia interfejsu API REST usługi Azure Logic Apps.

Struktura szablonu

Na najwyższym poziomie szablon Resource Manager jest zgodny z tą strukturą, która jest w pełni opisana w temacie struktury szablonów i składni usługi 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": {}
}

W przypadku szablonu aplikacji logiki pracujesz głównie z tymi obiektami szablonu:

Atrybut Opis
parameters Deklaruje parametry szablonu do akceptowania wartości do użycia podczas tworzenia i dostosowywania zasobów na potrzeby wdrażania na platformie Azure. Na przykład te parametry akceptują wartości nazwy i lokalizacji aplikacji logiki, połączeń i innych zasobów niezbędnych do wdrożenia. Te wartości parametrów można przechowywać w pliku parametrów opisanym w dalszej części tego tematu. Aby uzyskać ogólne informacje, zobacz Parametry — Resource Manager strukturę szablonu i składnię.
resources Definiuje zasoby do tworzenia lub aktualizowania i wdrażania w grupie zasobów platformy Azure, takich jak aplikacja logiki, połączenia, konta usługi Azure Storage itd. Aby uzyskać ogólne informacje, zobacz Zasoby — Resource Manager struktura szablonu i składnia.

Szablon aplikacji logiki używa tego formatu nazwy pliku:

<logic-app-name>. Json

Ważne

Składnia szablonu jest rozróżniana wielkość liter, dlatego upewnij się, że używasz spójnej wielkości liter.

Parametry szablonu

Szablon aplikacji logiki ma wiele parameters obiektów, które istnieją na różnych poziomach i wykonują różne funkcje. Na przykład na najwyższym poziomie można zadeklarować parametry szablonu dla wartości do akceptowania i używania podczas wdrażania podczas tworzenia i wdrażania zasobów na platformie Azure, na przykład:

  • Aplikacja logiki

  • Połączenia używane przez aplikację logiki do uzyskiwania dostępu do innych usług i systemów za pośrednictwem łączników zarządzanych

  • Inne zasoby wymagane przez aplikację logiki do wdrożenia

    Jeśli na przykład aplikacja logiki używa konta integracji dla scenariuszy biznesowych (B2B), obiekt najwyższego poziomu parameters szablonu deklaruje parametr, który akceptuje identyfikator zasobu dla tego konta integracji.

Oto ogólna struktura i składnia definicji parametrów, która jest w pełni opisana przez parametry — Resource Manager struktura szablonu i składnia:

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

W tym przykładzie przedstawiono tylko parametry szablonu dla wartości używanych do tworzenia i wdrażania tych zasobów na platformie Azure:

  • Nazwa i lokalizacja aplikacji logiki
  • Identyfikator używany dla konta integracji połączonego z aplikacją logiki
{
   "$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": {}
}

Z wyjątkiem parametrów, które obsługują wartości poufne lub muszą być zabezpieczone, takie jak nazwy użytkowników, hasła i wpisy tajne, wszystkie te parametry obejmują defaultValue atrybuty, chociaż w niektórych przypadkach wartości domyślne są puste. Wartości wdrożenia do użycia dla tych parametrów szablonu są dostarczane przez przykładowy plik parametrów opisany w dalszej części tego tematu.

Aby uzyskać więcej informacji na temat zabezpieczania parametrów szablonu, zobacz następujące tematy:

Inne obiekty szablonu często odwołują się do parametrów szablonu, aby mogły używać wartości przekazywanych przez parametry szablonu, na przykład:

  • Obiekt zasobów szablonu opisany w dalszej części tego tematu definiuje każdy zasób na platformie Azure, który chcesz utworzyć i wdrożyć, na przykład definicję zasobów aplikacji logiki. Te zasoby często używają wartości parametrów szablonu, takich jak nazwa i lokalizacja aplikacji logiki oraz informacje o połączeniu.

  • Na głębszym poziomie definicji zasobu aplikacji logiki obiekt parametrów definicji przepływu pracy deklaruje parametry dla wartości używanych w czasie wykonywania aplikacji logiki. Można na przykład zadeklarować parametry definicji przepływu pracy dla nazwy użytkownika i hasła używanego przez wyzwalacz HTTP do uwierzytelniania. Aby określić wartości parametrów definicji przepływu pracy, użyj parameters obiektu spoza definicji przepływu pracy, ale nadal wewnątrz definicji zasobu aplikacji logiki. W tym obiekcie zewnętrznym parameters można odwoływać się do wcześniej zadeklarowanych parametrów szablonu, które mogą akceptować wartości we wdrożeniu z pliku parametrów.

Podczas odwoływania się do parametrów wyrażenia szablonu i funkcje używają innej składni i zachowują się inaczej niż wyrażenia i funkcje definicji przepływu pracy. Aby uzyskać więcej informacji na temat tych różnic, zobacz Odwołania do parametrów w dalszej części tego tematu.

Najlepsze rozwiązania — parametry szablonu

Poniżej przedstawiono kilka najlepszych rozwiązań dotyczących definiowania parametrów:

  • Zadeklaruj parametry tylko dla wartości, które różnią się w zależności od potrzeb wdrożenia. Nie deklaruj parametrów dla wartości, które pozostają takie same w różnych wymaganiach dotyczących wdrażania.

  • Uwzględnij defaultValue atrybut, który może określać puste wartości dla wszystkich parametrów z wyjątkiem wartości, które są poufne lub muszą być zabezpieczone. Zawsze używaj zabezpieczonych parametrów dla nazw użytkowników, haseł i wpisów tajnych. Aby ukryć lub chronić poufne wartości parametrów, postępuj zgodnie ze wskazówkami w następujących tematach:

  • Aby odróżnić nazwy parametrów szablonu od nazw parametrów definicji przepływu pracy, można użyć opisowych nazw parametrów szablonu, na przykład: TemplateFabrikamPassword

Aby uzyskać więcej najlepszych rozwiązań dotyczących szablonów, zobacz Najlepsze rozwiązania dotyczące parametrów szablonu.

Plik parametrów szablonu

Aby podać wartości parametrów szablonu, zapisz te wartości w pliku parametrów. W ten sposób można używać różnych plików parametrów na podstawie potrzeb wdrożenia. Oto format nazwy pliku do użycia:

  • Nazwa pliku szablonu aplikacji logiki: <logic-app-name.json>
  • Nazwa pliku parametrów: <logic-app-name.parameters.json>

Oto struktura wewnątrz pliku parametrów, która zawiera odwołanie magazynu kluczy do przekazywania zabezpieczonej wartości parametru za pomocą usługi 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>
   }
}

Ten przykładowy plik parametrów określa wartości parametrów szablonu zadeklarowanych wcześniej w tym temacie:

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

Zasoby szablonu

Szablon ma resources obiekt, który jest tablicą zawierającą definicje dla każdego zasobu do tworzenia i wdrażania na platformie Azure, takich jak definicja zasobu aplikacji logiki, definicje zasobów połączenia i wszelkie inne zasoby wymagane przez aplikację logiki do wdrożenia.

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

Uwaga

Szablony mogą zawierać definicje zasobów dla wielu aplikacji logiki, dlatego upewnij się, że wszystkie zasoby aplikacji logiki określają tę samą grupę zasobów platformy Azure. Po wdrożeniu szablonu w grupie zasobów platformy Azure przy użyciu programu Visual Studio zostanie wyświetlony monit o otwarcie aplikacji logiki. Ponadto projekt grupy zasobów platformy Azure może zawierać więcej niż jeden szablon, dlatego po wyświetleniu monitu upewnij się, że wybrano prawidłowy plik parametrów.

Wyświetlanie definicji zasobów

Aby przejrzeć definicje zasobów dla wszystkich zasobów w grupie zasobów platformy Azure, pobierz aplikację logiki z platformy Azure do programu Visual Studio, co jest najprostszym sposobem utworzenia prawidłowego sparametryzowanego szablonu aplikacji logiki, który jest głównie gotowy do wdrożenia.

Aby uzyskać ogólne informacje o zasobach szablonu i ich atrybutach, zobacz następujące tematy:

Definicja zasobu aplikacji logiki

Definicja zasobu przepływu pracy aplikacji logiki w szablonie rozpoczyna się od properties obiektu, który zawiera następujące informacje:

  • Stan aplikacji logiki podczas wdrażania
  • Identyfikator dowolnego konta integracji używanego przez aplikację logiki
  • Definicja przepływu pracy aplikacji logiki
  • parameters Obiekt, który ustawia wartości do użycia w czasie wykonywania
  • Inne informacje o zasobie aplikacji logiki, takie jak nazwa, typ, lokalizacja, wszelkie ustawienia konfiguracji środowiska uruchomieniowego itd.
{
   "$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": {}
}

Poniżej przedstawiono atrybuty specyficzne dla definicji zasobu aplikacji logiki:

Atrybut Wymagany Typ Opis
state Tak Ciąg Stan aplikacji logiki we wdrożeniu Enabled oznacza, że aplikacja logiki jest aktywna i Disabled oznacza, że aplikacja logiki jest nieaktywna. Jeśli na przykład nie jesteś gotowy do korzystania z aplikacji logiki, ale chcesz wdrożyć wersję roboczą, możesz użyć Disabled tej opcji.
integrationAccount Nie Obiekt Jeśli aplikacja logiki używa konta integracji, które przechowuje artefakty dla scenariuszy biznesowych (B2B), ten obiekt zawiera id atrybut, który określa identyfikator konta integracji.
definition Tak Obiekt Podstawowa definicja przepływu pracy aplikacji logiki, która jest tym samym obiektem, który jest wyświetlany w widoku kodu i jest w pełni opisany w temacie Dokumentacja schematu dla języka definicji przepływu pracy . W tej definicji parameters przepływu pracy obiekt deklaruje parametry dla wartości do użycia w środowisku uruchomieniowym aplikacji logiki. Aby uzyskać więcej informacji, zobacz Definicja i parametry przepływu pracy.

Aby wyświetlić atrybuty w definicji przepływu pracy aplikacji logiki, przejdź z widoku projektu do widoku kodu w Azure Portal lub Visual Studio albo za pomocą narzędzia takiego jak Azure Resource Explorer.

parameters Nie Obiekt Wartości parametrów definicji przepływu pracy do użycia w środowisku uruchomieniowym aplikacji logiki. Definicje parametrów dla tych wartości są wyświetlane wewnątrz obiektu parametrów definicji przepływu pracy. Ponadto jeśli aplikacja logiki używa łączników zarządzanych do uzyskiwania dostępu do innych usług i systemów, ten obiekt zawiera $connections obiekt, który ustawia wartości połączenia do użycia w czasie wykonywania.
accessControl Nie Obiekt Aby określić atrybuty zabezpieczeń dla aplikacji logiki, takie jak ograniczenie dostępu ip do wyzwalaczy żądań lub dane wejściowe i wyjściowe historii uruchamiania. Aby uzyskać więcej informacji, zobacz Bezpieczny dostęp do aplikacji logiki.
runtimeConfiguration Nie Obiekt Aby określić wszystkie operationOptions właściwości kontrolujące sposób działania aplikacji logiki w czasie wykonywania. Możesz na przykład uruchomić aplikację logiki w trybie wysokiej przepływności.

Aby uzyskać więcej informacji na temat definicji zasobów dla tych obiektów usługi Logic Apps, zobacz Typy zasobów Microsoft.Logic:

Definicja i parametry przepływu pracy

Definicja przepływu pracy aplikacji logiki jest wyświetlana w definition obiekcie, który pojawia się w properties obiekcie wewnątrz definicji zasobu aplikacji logiki. Ten definition obiekt jest tym samym obiektem, który jest wyświetlany w widoku kodu i jest w pełni opisany w temacie Schemat języka definicji przepływu pracy . Definicja przepływu pracy zawiera wewnętrzny parameters obiekt deklaracji, w którym można zdefiniować nowe lub edytować istniejące parametry dla wartości używanych przez definicję przepływu pracy w czasie wykonywania. Następnie można odwoływać się do tych parametrów wewnątrz wyzwalacza lub akcji w przepływie pracy. Domyślnie ten parameters obiekt jest pusty, chyba że aplikacja logiki tworzy połączenia z innymi usługami i systemami za pośrednictwem łączników zarządzanych.

Aby ustawić wartości parametrów definicji przepływu pracy, użyj parameters obiektu spoza definicji przepływu pracy, ale nadal wewnątrz definicji zasobu aplikacji logiki. W tym obiekcie zewnętrznym parameters można następnie odwołać się do wcześniej zadeklarowanych parametrów szablonu, które mogą akceptować wartości we wdrożeniu z pliku parametrów.

Porada

Najlepszym rozwiązaniem jest, aby nie odwoływać się bezpośrednio do parametrów szablonu, które są oceniane podczas wdrażania, z poziomu definicji przepływu pracy. Zamiast tego zadeklaruj parametr definicji przepływu pracy, który można ustawić w parameters obiekcie, który znajduje się poza definicją przepływu pracy, ale nadal wewnątrz definicji zasobu aplikacji logiki. Aby uzyskać więcej informacji, zobacz Odwołania do parametrów.

Ta składnia pokazuje, gdzie można zadeklarować parametry zarówno na poziomach definicji szablonu, jak i przepływu pracy, wraz z miejscem, w którym można ustawić te wartości parametrów, odwołując się do parametrów definicji szablonu i przepływu pracy:

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

Parametry definicji bezpiecznego przepływu pracy

W przypadku parametru definicji przepływu pracy, który obsługuje poufne informacje, hasła, klucze dostępu lub wpisy tajne w czasie wykonywania, zadeklaruj lub edytuj parametr, aby użyć typu parametru securestring lub secureobject . Ten parametr można odwoływać się do całego i w definicji przepływu pracy. Na najwyższym poziomie szablonu zadeklaruj parametr, który ma ten sam typ, aby obsłużyć te informacje we wdrożeniu.

Aby ustawić wartość parametru definicji przepływu pracy, użyj parameters obiektu spoza definicji przepływu pracy, ale nadal wewnątrz definicji zasobu aplikacji logiki, aby odwołać się do parametru szablonu. Na koniec, aby przekazać wartość do parametru szablonu we wdrożeniu, zapisz wartość w usłudze Azure Key Vault i odwołaj się do tego magazynu kluczy w pliku parametrów używanym przez szablon podczas wdrażania.

W tym przykładowym szablonie przedstawiono sposób wykonywania tych zadań przez zdefiniowanie zabezpieczonych parametrów w razie potrzeby, aby można było przechowywać ich wartości w usłudze Azure Key Vault:

  • Deklarowanie zabezpieczonych parametrów dla wartości używanych do uwierzytelniania dostępu.
  • Użyj tych wartości zarówno na poziomach definicji szablonu, jak i przepływu pracy.
  • Podaj te wartości przy użyciu pliku parametrów.

Szablon

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

Plik parametrów

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

Najlepsze rozwiązania — parametry definicji przepływu pracy

Aby upewnić się, że projektant aplikacji logiki może poprawnie wyświetlać parametry definicji przepływu pracy, postępuj zgodnie z następującymi najlepszymi rozwiązaniami:

Aby uzyskać więcej informacji na temat parametrów definicji przepływu pracy, zobacz Parametry — język definicji przepływu pracy.

Definicje zasobów połączenia

Gdy aplikacja logiki tworzy i używa połączeń z innymi usługami i systemem przy użyciu łączników zarządzanych, obiekt szablonu resources zawiera definicje zasobów dla tych połączeń. Chociaż połączenia są tworzone z poziomu aplikacji logiki, połączenia są oddzielnymi zasobami platformy Azure z własnymi definicjami zasobów. Aby przejrzeć te definicje zasobów połączenia, pobierz aplikację logiki z platformy Azure do programu Visual Studio, co jest najprostszym sposobem utworzenia prawidłowego sparametryzowanego szablonu aplikacji logiki, który jest głównie gotowy do wdrożenia.

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

Definicje zasobów połączenia odwołują się do parametrów najwyższego poziomu szablonu dla ich wartości, aby można było podać te wartości we wdrożeniu przy użyciu pliku parametrów. Upewnij się, że połączenia używają tej samej grupy zasobów i lokalizacji platformy Azure co aplikacja logiki.

Oto przykładowa definicja zasobu dla połączenia Office 365 Outlook i odpowiadających mu parametrów szablonu:

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

Definicja zasobu aplikacji logiki działa również z definicjami zasobów połączenia w następujący sposób:

  • Wewnątrz definicji parameters przepływu pracy obiekt deklaruje $connections parametr dla wartości połączenia do użycia w środowisku uruchomieniowym aplikacji logiki. Ponadto wyzwalacz lub akcja, która tworzy połączenie, używa odpowiednich wartości przekazywanych przez ten $connections parametr.

  • Poza definicją przepływu pracy, ale nadal wewnątrz definicji zasobu aplikacji logiki inny parameters obiekt ustawia wartości, które mają być używane w czasie wykonywania parametru $connections , odwołując się do odpowiednich parametrów szablonu. Te wartości używają wyrażeń szablonów do odwołowania się do zasobów, które bezpiecznie przechowują metadane dla połączeń w aplikacji logiki.

    Na przykład metadane mogą zawierać parametry połączenia i tokeny dostępu, które można przechowywać w usłudze Azure Key Vault. Aby przekazać te wartości do parametrów szablonu, należy odwołać się do tego magazynu kluczy w pliku parametrów używanym przez szablon podczas wdrażania. Aby uzyskać więcej informacji na temat różnic w odwołaniu się do parametrów, zobacz Odwołania do parametrów w dalszej części tego tematu.

    Po otwarciu definicji przepływu pracy aplikacji logiki w widoku kodu za pośrednictwem Azure Portal lub programu Visual Studio obiekt pojawi się poza definicją przepływu pracy, $connections ale na tym samym poziomie. Ta kolejność w widoku kodu ułatwia odwoływanie się do tych parametrów podczas ręcznego aktualizowania definicji przepływu pracy:

    {
       "$connections": {<workflow-definition-parameter-connection-values-runtime},
       "definition": {<workflow-definition>}
    }
    
  • Definicja zasobu aplikacji logiki zawiera dependsOn obiekt określający zależności od połączeń używanych przez aplikację logiki.

Każde utworzone połączenie ma unikatową nazwę na platformie Azure. Podczas tworzenia wielu połączeń z tą samą usługą lub systemem każda nazwa połączenia jest dołączana z liczbą, która zwiększa się wraz z każdym nowym połączeniem utworzonym, na przykład , office365office365-1i tak dalej.

W tym przykładzie przedstawiono interakcje między definicją zasobu aplikacji logiki a definicją zasobu połączenia dla programu 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": {}
}

Parametry bezpiecznego połączenia

W przypadku parametru połączenia obsługującego poufne informacje, hasła, klucze dostępu lub wpisy tajne definicja zasobu połączenia zawiera parameterValues obiekt określający te wartości w formacie pary nazwa-wartość. Aby ukryć te informacje, możesz zadeklarować lub edytować parametry szablonu dla tych wartości przy użyciu securestring typów parametrów lub secureobject . Następnie możesz przechowywać te informacje w usłudze Azure Key Vault. Aby przekazać te wartości do parametrów szablonu, należy odwołać się do tego magazynu kluczy w pliku parametrów używanym przez szablon podczas wdrażania.

Oto przykład, który zawiera nazwę konta i klucz dostępu dla połączenia Azure Blob Storage:

Plik parametrów

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

Szablon

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

Uwierzytelnianie połączeń

Po wdrożeniu aplikacja logiki działa kompleksowo z prawidłowymi parametrami. Jednak nadal musisz autoryzować wszystkie połączenia OAuth do generowania prawidłowych tokenów dostępu do uwierzytelniania poświadczeń. Aby uzyskać więcej informacji, zobacz Autoryzowanie połączeń OAuth.

Niektóre połączenia obsługują używanie jednostki usługi Azure Active Directory (Azure AD) do autoryzacji połączeń dla aplikacji logiki zarejestrowanej w Azure AD. Na przykład ta definicja zasobu połączenia usługi Azure Data Lake pokazuje, jak odwoływać się do parametrów szablonu, które obsługują informacje jednostki usługi i jak szablon deklaruje następujące parametry:

Definicja zasobu połączenia

{
   <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')]"
      }
   }
}
Atrybut Opis
token:clientId Identyfikator aplikacji lub klienta skojarzony z jednostką usługi
token:clientSecret Wartość klucza skojarzona z jednostką usługi
token:TenantId Identyfikator katalogu dla dzierżawy Azure AD
token:grantType Żądany typ udzielenia, który musi mieć wartość client_credentials. Aby uzyskać więcej informacji, zobacz Platforma tożsamości Microsoft i przepływ poświadczeń klienta OAuth 2.0.

Definicje parametrów szablonu

Obiekt najwyższego poziomu parameters szablonu deklaruje te parametry dla przykładowego połączenia:

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

Aby uzyskać więcej informacji na temat pracy z jednostkami usługi, zobacz następujące tematy:

Odwołania do parametrów

Aby odwołać się do parametrów szablonu, można użyć wyrażeń szablonu z funkcjami szablonu, które są oceniane podczas wdrażania. Wyrażenia szablonów używają nawiasów kwadratowych ([]):

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

Aby odwołać się do parametrów definicji przepływu pracy, należy użyć wyrażeń i funkcji języka definicji przepływu pracy, które są oceniane w czasie wykonywania. Możesz zauważyć, że niektóre funkcje szablonu i funkcje definicji przepływu pracy mają taką samą nazwę. Wyrażenia definicji przepływu pracy zaczynają się od symbolu "at" (@):

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

Możesz przekazać wartości parametrów szablonu do definicji przepływu pracy dla aplikacji logiki do użycia w czasie wykonywania. Należy jednak unikać używania parametrów szablonu, wyrażeń i składni w definicji przepływu pracy, ponieważ projektant aplikacji logiki nie obsługuje elementów szablonu. Ponadto składnia szablonu i wyrażenia mogą komplikować kod ze względu na różnice w obliczeniach wyrażeń.

Zamiast tego wykonaj te ogólne kroki, aby zadeklarować i odwołać się do parametrów definicji przepływu pracy do użycia w czasie wykonywania, zadeklarować i odwołać się do parametrów szablonu do użycia we wdrożeniu oraz określić wartości do przekazania we wdrożeniu przy użyciu pliku parametrów. Aby uzyskać szczegółowe informacje, zobacz sekcję Definicja i parametry przepływu pracy we wcześniejszej części tego tematu.

  1. Utwórz szablon i zadeklaruj parametry szablonu dla wartości do akceptowania i używania podczas wdrażania.

  2. W definicji przepływu pracy zadeklaruj parametry dla wartości, które mają być akceptowane i używane w czasie wykonywania. Następnie można odwoływać się do tych wartości w definicji przepływu pracy i w niej.

  3. parameters W obiekcie, który znajduje się poza definicją przepływu pracy, ale nadal wewnątrz definicji zasobu aplikacji logiki, ustaw wartości parametrów definicji przepływu pracy, odwołując się do odpowiednich parametrów szablonu. Dzięki temu można przekazać wartości parametrów szablonu do parametrów definicji przepływu pracy.

  4. W pliku parameters określ wartości szablonu do użycia podczas wdrażania.

Pełny przykładowy szablon

Oto sparametryzowany przykładowy szablon, który jest używany przez przykłady tego tematu:

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

Następne kroki