Genel Bakış: Azure Resource Manager şablonlarını kullanarak Azure Logic Apps için dağıtımı otomatikleştirme

Şunlar için geçerlidir: Azure Logic Apps (Tüketim)

Mantıksal uygulamanızı oluşturma ve dağıtmayı otomatikleştirmeye hazır olduğunuzda mantıksal uygulamanızın temel iş akışı tanımını bir Azure Resource Manager şablonuna genişletebilirsiniz. Bu şablon mantıksal uygulamanızı sağlamaya ve dağıtmaya yönelik altyapıyı, kaynakları, parametreleri ve diğer bilgileri tanımlar. Dağıtımda değişiklik gösteren ve parametreleştirme olarak da bilinen değerler için parametreler tanımlayarak, farklı dağıtım gereksinimlerine göre mantıksal uygulamaları tekrar tekrar ve tutarlı bir şekilde dağıtabilirsiniz.

Örneğin, geliştirme, test ve üretim ortamlarına dağıtırsanız, büyük olasılıkla her ortam için farklı bağlantı dizeleri kullanırsınız. Farklı bağlantı dizelerini kabul eden şablon parametrelerini bildirebilir ve sonra bu dizeleri ayrı bir parametre dosyasında depolayabilirsiniz. Bu şekilde, şablonu güncelleştirmek ve yeniden dağıtmak zorunda kalmadan bu değerleri değiştirebilirsiniz. Parolalar ve gizli diziler gibi hassas veya güvenliği sağlanması gereken parametre değerlerine sahip olduğunuz senaryolarda, bu değerleri Azure Key Vault'de depolayabilir ve parametre dosyanızın bu değerleri almasını sağlayabilirsiniz. Ancak, bu senaryolarda geçerli değerleri almak için yeniden dağıtacaksınız.

Bu genel bakış, mantıksal uygulama iş akışı tanımı içeren bir Resource Manager şablonundaki öznitelikleri açıklar. Hem şablonda hem de iş akışı tanımınızda JSON söz dizimi kullanılır, ancak iş akışı tanımı İş Akışı Tanımı Dili şemasını da izlediğinden bazı farklılıklar vardır. Örneğin, şablon ifadeleri ve iş akışı tanımı ifadeleri , parametrelere başvurma ve kabul edebildiği değerler açısından farklılık gösterir.

İpucu

Çoğunlukla dağıtıma hazır geçerli bir parametreli mantıksal uygulama şablonu almanın en kolay yolu için Visual Studio (ücretsiz Community sürümü veya üzeri) ve Visual Studio için Azure Logic Apps Araçları'nı kullanın. Ardından Visual Studio'da mantıksal uygulamanızı oluşturabilir veya Azure'dan VisualStudio'ya var olan bir mantıksal uygulamayı bulup indirebilirsiniz.

Veya LogicAppTemplate modülüyle Azure PowerShell kullanarak mantıksal uygulama şablonları oluşturabilirsiniz.

Bu konudaki örnek mantıksal uygulama, yeni bir e-posta geldiğinde tetikleyen bir Office 365 Outlook tetikleyicisi ve e-posta gövdesi için blob oluşturan ve bu blobu bir Azure depolama kapsayıcısına yükleyen bir Azure Blob Depolama eylemi kullanır. Örneklerde ayrıca dağıtımda farklılık gösteren değerlerin nasıl parametreleştirildiğini de görebilirsiniz.

Resource Manager şablonları hakkında daha fazla bilgi için şu konulara bakın:

Mantıksal uygulamalara, tümleştirme hesaplarına, tümleştirme hesabı yapıtlarına ve tümleştirme hizmeti ortamlarına özgü şablon kaynak bilgileri için bkz. Microsoft.Logic kaynak türleri.

Örnek mantıksal uygulama şablonları için şu örneklere bakın:

Logic Apps REST API'sinde Azure Logic Apps REST API'sine genel bakış ile başlayın.

Şablon yapısı

En üst düzeyde bir Resource Manager şablonu, Azure Resource Manager şablonu yapısı ve söz dizimi konusunda tam olarak açıklanan bu yapıyı izler:

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

Mantıksal uygulama şablonu için öncelikle şu şablon nesneleriyle çalışırsınız:

Öznitelik Açıklama
parameters Azure'da dağıtım için kaynakları oluştururken ve özelleştirirken kullanılacak değerleri kabul etmek için şablon parametrelerini bildirir. Örneğin, bu parametreler mantıksal uygulamanızın adı ve konumu, bağlantıları ve dağıtım için gerekli olan diğer kaynaklar için değerleri kabul eder. Bu parametre değerlerini, bu konunun ilerleyen bölümlerinde açıklanan bir parametre dosyasında depolayabilirsiniz. Genel ayrıntılar için bkz. Parametreler - şablon yapısı ve söz dizimi Resource Manager.
resources Mantıksal uygulamanız, bağlantılarınız, Azure depolama hesaplarınız vb. gibi bir Azure kaynak grubu oluşturmak veya güncelleştirmek ve dağıtmak için kaynakları tanımlar. Genel ayrıntılar için bkz. Kaynaklar - şablon yapısı ve söz dizimi Resource Manager.

Mantıksal uygulama şablonunuz şu dosya adı biçimini kullanır:

<logic-app-name>. Json

Önemli

Şablon söz dizimi büyük/küçük harfe duyarlı olduğundan tutarlı büyük/küçük harf kullandığınızdan emin olun.

Şablon parametreleri

Mantıksal uygulama şablonunda farklı düzeylerde bulunan ve farklı işlevler gerçekleştiren birden çok parameters nesne vardır. Örneğin, en üst düzeyde, Azure'da kaynak oluştururken ve dağıtırken dağıtımda kabul etmek ve kullanmak üzere değerlerin şablon parametrelerini bildirebilirsiniz, örneğin:

  • Mantıksal uygulamanız

  • Mantıksal uygulamanızın yönetilen bağlayıcılar aracılığıyla diğer hizmetlere ve sistemlere erişmek için kullandığı bağlantılar

  • Mantıksal uygulamanızın dağıtım için ihtiyaç duyduğu diğer kaynaklar

    Örneğin, mantıksal uygulamanız işletmeler arası (B2B) senaryolar için bir tümleştirme hesabı kullanıyorsa, şablonun en üst düzey parameters nesnesi bu tümleştirme hesabının kaynak kimliğini kabul eden parametreyi bildirir.

Parametreler - Resource Manager şablon yapısı ve söz dizimi tarafından tam olarak açıklanan parametre tanımının genel yapısı ve söz dizimi aşağıdadır:

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

Bu örnekte yalnızca Azure'da bu kaynakları oluşturmak ve dağıtmak için kullanılan değerlerin şablon parametreleri gösterilmektedir:

  • Mantıksal uygulamanızın adı ve konumu
  • Mantıksal uygulamaya bağlı bir tümleştirme hesabı için kullanılacak kimlik
{
   "$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": {}
}

Kullanıcı adları, parolalar ve gizli diziler gibi hassas veya güvenliği sağlanması gereken değerleri işleyen parametreler dışında, bazı durumlarda varsayılan değerler boş değerler olsa da, bu parametrelerin tümü öznitelikleri içerir defaultValue . Bu şablon parametreleri için kullanılacak dağıtım değerleri, bu konunun ilerleyen bölümlerinde açıklanan örnek parametre dosyası tarafından sağlanır.

Şablon parametrelerinin güvenliğini sağlama hakkında daha fazla bilgi için şu konulara bakın:

Diğer şablon nesneleri genellikle şablon parametrelerine başvurur, böylece şablon parametrelerinden geçen değerleri kullanabilirler, örneğin:

  • Bu konunun ilerleyen bölümlerinde açıklanan şablonunuzun resources nesnesi, Mantıksal uygulamanızın kaynak tanımı gibi oluşturmak ve dağıtmak istediğiniz Her Kaynağı Azure'da tanımlar. Bu kaynaklar genellikle mantıksal uygulamanızın adı, konumu ve bağlantı bilgileri gibi şablon parametre değerlerini kullanır.

  • Mantıksal uygulamanızın kaynak tanımında daha derin bir düzeyde, iş akışı tanımınızın parameters nesnesi , mantıksal uygulamanızın çalışma zamanında kullanılacak değerler için parametreler bildirir. Örneğin, HTTP tetikleyicisinin kimlik doğrulaması için kullandığı kullanıcı adı ve parola için iş akışı tanımı parametrelerini bildirebilirsiniz. İş akışı tanımı parametrelerinin değerlerini belirtmek için iş akışı tanımınızın dışında olan ancak mantıksal uygulamanızın kaynak tanımının içinde olan nesneyi kullanınparameters. Bu dış parameters nesnede, daha önce bildirilen şablon parametrelerine başvurabilirsiniz. Bu parametreler dosyasından dağıtımda değerleri kabul edebilir.

Parametrelere başvururken şablon ifadeleri ve işlevleri farklı söz dizimi kullanır ve iş akışı tanımı ifadelerinden ve işlevlerinden farklı davranır. Bu farklılıklar hakkında daha fazla bilgi için, bu konunun devamında yer alan Parametrelere başvurular bölümüne bakın.

En iyi yöntemler - şablon parametreleri

Parametreleri tanımlamaya yönelik bazı en iyi yöntemler şunlardır:

  • Yalnızca dağıtım gereksinimlerinize göre değişen değerler için parametreleri bildirin. Farklı dağıtım gereksinimlerinde aynı kalan değerler için parametre bildirmeyin.

  • defaultValue Hassas olan veya güvenliği sağlanması gereken değerler dışında tüm parametreler için boş değerler belirtebilen özniteliğini ekleyin. Kullanıcı adları, parolalar ve gizli diziler için her zaman güvenli parametreler kullanın. Hassas parametre değerlerini gizlemek veya korumak için şu konulardaki yönergeleri izleyin:

  • Şablon parametre adlarını iş akışı tanımı parametre adlarından ayırmak için açıklayıcı şablon parametre adlarını kullanabilirsiniz, örneğin: TemplateFabrikamPassword

Daha fazla şablon en iyi yöntemi için bkz. Şablon parametreleri için en iyi yöntemler.

Şablon parametreleri dosyası

Şablon parametrelerinin değerlerini sağlamak için bu değerleri bir parametre dosyasında depolayın. Bu şekilde, dağıtım gereksinimlerinize göre farklı parametre dosyaları kullanabilirsiniz. Kullanılacak dosya adı biçimi aşağıdadır:

  • Mantıksal uygulama şablonu dosya adı: <logic-app-name.json>
  • Parametreler dosya adı: <logic-app-name.parameters.json>

Azure Key Vault ile güvenli bir parametre değeri geçirmek için bir anahtar kasası başvurusu içeren parametre dosyasının içindeki yapı aşağıdadır:

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

Bu örnek parametre dosyası, bu konuda daha önce bildirilen şablon parametrelerinin değerlerini belirtir:

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

Şablon kaynakları

Şablonunuz, mantıksal uygulamanızın kaynak tanımı, bağlantı kaynak tanımları ve mantıksal uygulamanızın dağıtım için ihtiyaç duyduğu diğer kaynaklar gibi Azure'da oluşturulup dağıtılacak her kaynağın tanımlarını içeren bir dizi olan bir resources nesneye sahiptir.

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

Not

Şablonlar birden çok mantıksal uygulama için kaynak tanımları içerebilir, bu nedenle tüm mantıksal uygulama kaynaklarınızın aynı Azure kaynak grubunu belirttiğinden emin olun. Visual Studio kullanarak şablonu bir Azure kaynak grubuna dağıttığınızda, hangi mantıksal uygulamayı açmak istediğiniz sorulur. Ayrıca, Azure kaynak grubu projeniz birden fazla şablon içerebilir, bu nedenle istendiğinde doğru parametre dosyasını seçtiğinizden emin olun.

Kaynak tanımlarını görüntüleme

Azure kaynak grubundaki tüm kaynakların kaynak tanımlarını gözden geçirmek için mantıksal uygulamanızı Azure'dan Visual Studio'ya indirin. Bu, çoğunlukla dağıtım için hazır olan geçerli bir parametreli mantıksal uygulama şablonu oluşturmanın en kolay yoludur.

Şablon kaynakları ve öznitelikleri hakkında genel bilgi için şu konulara bakın:

Mantıksal uygulama kaynak tanımı

Mantıksal uygulamanızın bir şablondaki iş akışı kaynak tanımı , şu bilgileri içeren nesnesiyle properties başlar:

  • Mantıksal uygulamanızın dağıtımdaki durumu
  • Mantıksal uygulamanız tarafından kullanılan tümleştirme hesabının kimliği
  • Mantıksal uygulamanızın iş akışı tanımı
  • parameters Çalışma zamanında kullanılacak değerleri ayarlayan bir nesne
  • Mantıksal uygulamanızla ilgili ad, tür, konum, çalışma zamanı yapılandırma ayarları vb. gibi diğer kaynak bilgileri
{
   "$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": {}
}

Mantıksal uygulama kaynak tanımınıza özgü öznitelikler şunlardır:

Öznitelik Gerekli Tür Açıklama
state Evet Dize Mantıksal uygulamanızın dağıtımdaki durumu, Enabled mantıksal uygulamanızın canlı olduğu ve Disabled mantıksal uygulamanızın etkin olmadığı anlamına gelir. Örneğin mantıksal uygulamanızın canlı yayına başlamaya hazır değilseniz ancak taslak sürümü dağıtmak istiyorsanız seçeneğini kullanabilirsiniz Disabled .
integrationAccount No Nesne Mantıksal uygulamanız işletmeler arası (B2B) senaryoların yapıtlarını depolayan bir tümleştirme hesabı kullanıyorsa, bu nesne tümleştirme hesabının kimliğini belirten özniteliğini içerir id .
definition Yes Nesne Mantıksal uygulamanızın kod görünümünde görünen ve İş Akışı Tanımı Dili için şema başvurusu konusunda tam olarak açıklanan nesne olan temel iş akışı tanımı. Bu iş akışı tanımında parameters nesnesi, mantıksal uygulama çalışma zamanında kullanılacak değerlerin parametrelerini bildirir. Daha fazla bilgi için bkz . İş akışı tanımı ve parametreleri.

Mantıksal uygulamanızın iş akışı tanımındaki öznitelikleri görüntülemek için Azure portal veya Visual Studio'da "tasarım görünümünden" "kod görünümüne" geçin veya Azure Kaynak Gezgini gibi bir araç kullanın.

parameters No Nesne Mantıksal uygulama çalışma zamanında kullanılacak iş akışı tanımı parametre değerleri . Bu değerlerin parametre tanımları iş akışı tanımınızın parameters nesnesinin içinde görünür. Ayrıca mantıksal uygulamanız diğer hizmetlere ve sistemlere erişmek için yönetilen bağlayıcılar kullanıyorsa, bu nesne çalışma zamanında kullanılacak bağlantı değerlerini ayarlayan bir $connections nesne içerir.
accessControl No Nesne mantıksal uygulamanızın ip erişimini istek tetikleyicilerine kısıtlama veya geçmiş girişlerini ve çıkışlarını çalıştırma gibi güvenlik özniteliklerini belirtmek için. Daha fazla bilgi için bkz . Mantıksal uygulamalara güvenli erişim.
runtimeConfiguration No Nesne Mantıksal uygulamanızın çalışma zamanında nasıl davranacağını denetleyebilen özellikleri operationOptions belirtmek için. Örneğin, mantıksal uygulamanızı yüksek aktarım hızı modunda çalıştırabilirsiniz.

Bu Logic Apps nesnelerinin kaynak tanımları hakkında daha fazla bilgi için bkz. Microsoft.Logic kaynak türleri:

İş akışı tanımı ve parametreleri

Mantıksal uygulamanızın iş akışı tanımı, mantıksal uygulamanızın definition kaynak tanımının properties içindeki nesnede görünen nesnede görünür. Bu definition nesne, kod görünümünde görünen nesneyle aynıdır ve İş Akışı Tanım Dili için Şema başvurusu konusunda tam olarak açıklanmıştır. İş akışı tanımınız, çalışma zamanında iş akışı tanımınız tarafından kullanılan değerler için yeni parametreler tanımlayabileceğiniz veya mevcut parametreleri düzenleyebileceğiniz bir iç parameters bildirim nesnesi içerir. Ardından bu parametrelere tetikleyicinin içinde veya iş akışınızdaki eylemlerde başvurabilirsiniz. Mantıksal uygulamanız yönetilen bağlayıcılar aracılığıyla diğer hizmetlere ve sistemlere bağlantı oluşturmadığı sürece varsayılan olarak bu parameters nesne boş olur.

İş akışı tanımı parametrelerinin değerlerini ayarlamak için iş akışı tanımınızın dışında olan ancak mantıksal uygulamanızın kaynak tanımının içinde olan nesneyi kullanınparameters. Bu dış parameters nesnede, daha önce bildirilen şablon parametrelerinize başvurabilirsiniz. Bu parametreler dosyasından dağıtımda değerleri kabul edebilir.

İpucu

En iyi uygulama olarak, iş akışı tanımının içinden dağıtımda değerlendirilen şablon parametrelerine doğrudan başvurmayın. Bunun yerine, iş akışı tanımınızın dışındaki ancak mantıksal uygulamanızın kaynak tanımının parametersiçinde bulunan nesnede ayarlayabileceğiniz bir iş akışı tanımı parametresi bildirin. Daha fazla bilgi için bkz. Parametrelere başvurular.

Bu söz dizimi, hem şablon hem de iş akışı tanımı düzeylerinde parametreleri bildirebileceğiniz ve şablona ve iş akışı tanımı parametrelerine başvurarak bu parametre değerlerini nerede ayarlayabileceğinizi gösterir:

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

İş akışı tanım parametrelerinin güvenliğini sağlama

Çalışma zamanında hassas bilgileri, parolaları, erişim anahtarlarını veya gizli dizileri işleyen bir iş akışı tanımı parametresi için veya parametre türünü kullanmak üzere parametreyi securestring bildirin veya secureobject düzenleyin. Bu parametreye iş akışı tanımınız boyunca ve içinde başvurabilirsiniz. Şablonun en üst düzeyinde, dağıtımda bu bilgileri işlemek için aynı türe sahip bir parametre bildirin.

İş akışı tanımı parametresinin değerini ayarlamak için, şablon parametresine başvurmak için iş akışı tanımınızın dışında, ancak mantıksal uygulama kaynak tanımınızın içinde olan nesneyi kullanınparameters. Son olarak, değeri dağıtımda şablon parametrenize geçirmek için bu değeri Azure Key Vault'de depolayın ve dağıtımda şablonunuz tarafından kullanılan parametre dosyasında bu anahtar kasasına başvurun.

Bu örnek şablon, gerektiğinde güvenli parametreler tanımlayarak bu görevleri nasıl tamamlayabileceğinizi gösterir, böylece bunların değerlerini Azure Key Vault' de depolayabilirsiniz:

  • Erişimin kimliğini doğrulamak için kullanılan değerler için güvenli parametreler bildirin.
  • Bu değerleri hem şablon hem de iş akışı tanımı düzeylerinde kullanın.
  • Bir parametre dosyası kullanarak bu değerleri sağlayın.

Şablon

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

Parametreler dosyası

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

En iyi yöntemler - iş akışı tanımı parametreleri

Mantıksal Uygulama Tasarımcısı'nın iş akışı tanımı parametrelerini doğru şekilde gösterediğinden emin olmak için şu en iyi yöntemleri izleyin:

İş akışı tanımı parametreleri hakkında daha fazla bilgi için bkz. Parametreler - İş Akışı Tanım Dili.

Bağlantı kaynağı tanımları

Mantıksal uygulamanız yönetilen bağlayıcıları kullanarak diğer hizmetlere ve sisteme bağlantılar oluşturduğunda ve kullandığında, şablonunuzun resources nesnesi bu bağlantıların kaynak tanımlarını içerir. Bir mantıksal uygulamanın içinden bağlantılar oluştursanız da, bağlantılar kendi kaynak tanımlarına sahip ayrı Azure kaynaklarıdır. Bu bağlantı kaynağı tanımlarını gözden geçirmek için mantıksal uygulamanızı Azure'dan Visual Studio'ya indirin. Bu, çoğunlukla dağıtım için hazır olan geçerli bir parametreli mantıksal uygulama şablonu oluşturmanın en kolay yoludur.

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

Bağlantı kaynağı tanımları, değerleri için şablonun en üst düzey parametrelerine başvurur, böylece bu değerleri bir parametre dosyası kullanarak dağıtımda sağlayabilirsiniz. Bağlantıların mantıksal uygulamanızla aynı Azure kaynak grubunu ve konumunu kullandığından emin olun.

Office 365 Outlook bağlantısı ve ilgili şablon parametreleri için örnek bir kaynak tanımı aşağıda verilmiştir:

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

Mantıksal uygulamanızın kaynak tanımı şu yollarla bağlantı kaynağı tanımlarıyla da çalışır:

  • İş akışı tanımınızın içinde nesnesi, parameters mantıksal uygulama çalışma zamanında kullanılacak bağlantı değerleri için bir $connections parametre bildirir. Ayrıca, bağlantı oluşturan tetikleyici veya eylem bu $connections parametreden geçen karşılık gelen değerleri kullanır.

  • İş akışı tanımınızın dışında ama yine de mantıksal uygulamanızın kaynak tanımının içinde olan başka bir parameters nesne, ilgili şablon parametrelerine başvurarak parametre için $connections çalışma zamanında kullanılacak değerleri ayarlar. Bu değerler, mantıksal uygulamanızdaki bağlantıların meta verilerini güvenli bir şekilde depolayan kaynaklara başvurmak için şablon ifadelerini kullanır.

    Örneğin meta veriler, Azure Key Vault'da depolayabileceğiniz bağlantı dizelerini ve erişim belirteçlerini içerebilir. Bu değerleri şablon parametrelerinize geçirmek için, dağıtımda şablonunuz tarafından kullanılan parametre dosyasında bu anahtar kasasına başvurursunuz. Parametrelere başvurmadaki farklar hakkında daha fazla bilgi için bu konunun devamında yer alan Parametrelere başvurular bölümüne bakın.

    Mantıksal uygulamanızın iş akışı tanımını Azure portal veya Visual Studio aracılığıyla kod görünümünde açtığınızda, $connections nesne iş akışı tanımınızın dışında ancak aynı düzeyde görünür. Kod görünümünde bu sıralama, iş akışı tanımını el ile güncelleştirdiğinizde bu parametrelere başvurmayı kolaylaştırır:

    {
       "$connections": {<workflow-definition-parameter-connection-values-runtime},
       "definition": {<workflow-definition>}
    }
    
  • Mantıksal uygulamanızın kaynak tanımı, mantıksal uygulamanız tarafından kullanılan bağlantılardaki bağımlılıkları belirten bir dependsOn nesneye sahiptir.

Oluşturduğunuz her bağlantının Azure'da benzersiz bir adı vardır. Aynı hizmet veya sisteme birden çok bağlantı oluşturduğunuzda, her bağlantı adına bir sayı eklenir ve bu sayı, oluşturulan her yeni bağlantıyla (örneğin, office365, office365-1vb.) artar.

Bu örnekte, Office 365 Outlook için mantıksal uygulamanızın kaynak tanımı ile bağlantı kaynağı tanımı arasındaki etkileşimler gösterilir:

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

Güvenli bağlantı parametreleri

Hassas bilgileri, parolaları, erişim anahtarlarını veya gizli dizileri işleyen bir bağlantı parametresi için, bağlantının kaynak tanımı bu değerleri ad-değer çifti biçiminde belirten bir parameterValues nesne içerir. Bu bilgileri gizlemek için, veya parametre türlerini kullanarak securestring bu değerler için şablon parametrelerini bildirebilir veya secureobject düzenleyebilirsiniz. Daha sonra bu bilgileri Azure Key Vault'de depolayabilirsiniz. Bu değerleri şablon parametrelerinize geçirmek için, dağıtımda şablonunuz tarafından kullanılan parametre dosyasında bu anahtar kasasına başvurursunuz.

Bir Azure Blob Depolama bağlantısı için hesap adını ve erişim anahtarını sağlayan bir örnek aşağıda verilmiştir:

Parametre dosyası

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

Şablon

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

Bağlantıların kimliğini doğrulama

Dağıtımdan sonra mantıksal uygulamanız geçerli parametrelerle uçtan uca çalışır. Ancak, kimlik bilgilerinizin kimliğini doğrulamak için geçerli erişim belirteçleri oluşturmak için OAuth bağlantılarını yetkilendirmeniz gerekir. Daha fazla bilgi için bkz. OAuth bağlantılarını yetkilendirme.

Bazı bağlantılar, Azure AD'de kayıtlı bir mantıksal uygulama için bağlantıları yetkilendirmek üzere Azure Active Directory (Azure AD) hizmet sorumlusu kullanmayı destekler. Örneğin, bu Azure Data Lake bağlantı kaynak tanımı hizmet sorumlusunun bilgilerini işleyen şablon parametrelerine nasıl başvurduğunu ve şablonun şu parametreleri nasıl bildirdiğini gösterir:

Bağlantı kaynağı tanımı

{
   <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')]"
      }
   }
}
Öznitelik Açıklama
token:clientId Hizmet sorumlunuzla ilişkili uygulama veya istemci kimliği
token:clientSecret Hizmet sorumlunuzla ilişkili anahtar değeri
token:TenantId Azure AD kiracınızın dizin kimliği
token:grantType olması gereken client_credentialsistenen verme türü. Daha fazla bilgi için bkz. Microsoft kimlik platformu ve OAuth 2.0 istemci kimlik bilgileri akışı.

Şablon parametresi tanımları

Şablonun en üst düzey parameters nesnesi örnek bağlantı için şu parametreleri bildirir:

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

Hizmet sorumlularıyla çalışma hakkında daha fazla bilgi için şu konulara bakın:

Parametrelere başvurular

Şablon parametrelerine başvurmak için, şablon ifadelerini dağıtımda değerlendirilen şablon işlevleriyle kullanabilirsiniz. Şablon ifadeleri köşeli ayraç ([]) kullanır:

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

İş akışı tanımı parametrelerine başvurmak için, çalışma zamanında değerlendirilen İş Akışı Tanımı Dili ifadelerini ve işlevlerini kullanırsınız. Bazı şablon işlevlerinin ve iş akışı tanımı işlevlerinin aynı ada sahip olduğunu fark edebilirsiniz. İş akışı tanımı ifadeleri "at" simgesiyle (@):

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

Mantıksal uygulamanızın çalışma zamanında kullanması için şablon parametre değerlerini iş akışı tanımınıza geçirebilirsiniz. Ancak Logic App Designer şablon öğelerini desteklemediğinden iş akışı tanımınızda şablon parametrelerini, ifadeleri ve söz dizimini kullanmaktan kaçının. Ayrıca, ifadelerin değerlendirilmesindeki farklılıklar nedeniyle şablon söz dizimi ve ifadeler kodunuzu karmaşıklaştırabilir.

Bunun yerine, çalışma zamanında kullanılacak iş akışı tanım parametrelerini bildirmek ve bunlara başvurmak, dağıtımda kullanılacak şablon parametrelerini bildirmek ve başvurmak ve bir parametre dosyası kullanarak dağıtımda geçirılacak değerleri belirtmek için bu genel adımları izleyin. Tüm ayrıntılar için bu konunun başlarındaki İş akışı tanımı ve parametreleri bölümüne bakın.

  1. Şablonunuzu oluşturun ve dağıtımda kabul edip kullanılacak değerler için şablon parametrelerini bildirin.

  2. İş akışı tanımınızda, çalışma zamanında kabul etmek ve kullanmak üzere değerlerin parametrelerini bildirin. Daha sonra bu değerlere iş akışı tanımınız boyunca ve içinde başvurabilirsiniz.

  3. parameters İş akışı tanımınızın dışında olan ancak yine de mantıksal uygulamanızın kaynak tanımının içinde yer alan nesnede, ilgili şablon parametrelerine başvurarak iş akışı tanımı parametrelerinizin değerlerini ayarlayın. Bu şekilde, şablon parametre değerlerini iş akışı tanımı parametrelerinize geçirebilirsiniz.

  4. Parametreler dosyasında, şablonunuzun dağıtımda kullanacağınız değerleri belirtin.

Tam örnek şablon

Bu konunun örnekleri tarafından kullanılan parametreli örnek şablonu aşağıda verilmiştir:

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

Sonraki adımlar