Gambaran umum: Mengotomatiskan penyebaran untuk Azure Logic Apps menggunakan templat Azure Resource Manager

Berlaku pada: Azure Logic Apps (Konsumsi)

Saat Anda siap mengotomatiskan pembuatan dan penyebaran aplikasi logika, Anda dapat memperluas definisi alur kerja yang mendasari aplikasi logika Anda ke dalam templat Azure Resource Manager. Templat ini menentukan infrastruktur, sumber daya, parameter, dan informasi lain untuk provisi dan penyebaran aplikasi logika Anda. Dengan mendefinisikan parameter untuk nilai yang bervariasi saat penyebaran, yang juga dikenal sebagai parameterisasi, Anda dapat secara berulang dan konsisten menyebarkan aplikasi logika berdasarkan kebutuhan penyebaran yang berbeda.

Misalnya, jika Anda menyebarkan ke lingkungan untuk pengembangan, pengujian, dan produksi, Anda mungkin menggunakan string koneksi yang berbeda untuk tiap lingkungan. Anda dapat mendeklarasikan parameter templat yang menerima string koneksi yang berbeda lalu menyimpan string tersebut dalam file parameter terpisah. Dengan demikian, Anda dapat mengubah nilai tersebut tanpa harus memperbarui dan menyebar ulang template. Untuk skenario saat Anda memiliki nilai parameter yang sensitif atau harus diamankan, seperti kata sandi dan rahasia, Anda dapat menyimpan nilai tersebut di Azure Key Vault dan meminta file parameter Anda mengambil nilai tersebut. Namun, dalam skenario ini, Anda akan melakukan penyebaran ulang untuk mengambil nilai saat ini.

Gambaran umum ini menjelaskan atribut dalam templat Azure Resource Manager yang menyertakan definisi alur kerja aplikasi logika. Baik templat dan definisi alur kerja Anda menggunakan sintaks JSON, tetapi terdapat beberapa perbedaan karena definisi alur kerja juga mengikuti skema Bahasa Definisi Alur Kerja. Misalnya, ekspresi templat dan ekspresi definisi alur kerja berbeda dalam hal bagaimana mereka mereferensikan parameter dan nilai yang dapat diterimanya.

Tip

Untuk cara termudah untuk membuat templat aplikasi logika parameter yang valid yang sebagian besar siap untuk penyebaran, gunakan Visual Studio (edisi Community yang gratis atau lebih tinggi) dan Azure Logic Apps Tools untuk Visual Studio. Anda kemudian dapat membuat aplikasi logika di Visual Studio atau menemukan dan mengunduh aplikasi logika yang ada dari Azure ke Visual Studio.

Atau, Anda dapat membuat templat aplikasi logika dengan menggunakan Azure PowerShell dengan modul LogicAppTemplate.

Contoh aplikasi logika dalam topik ini menggunakan pemicu Outlook Office 365 yang dinyalakan saat email baru datang dan tindakan Azure Blob Storage yang membuat blob untuk isi email dan mengunggah blob itu ke kontainer penyimpanan Azure. Contoh juga menunjukkan cara memparameter nilai yang bervariasi saat penyebaran.

Untuk informasi selengkapnya tentang templat Azure Resource Manager, lihat topik ini:

Untuk informasi sumber daya templat khusus untuk aplikasi logika, akun integrasi, artefak akun integrasi, dan lingkungan layanan integrasi, lihat tipe sumber daya Microsoft.Logic.

Untuk contoh templat aplikasi logika, lihat contoh-contoh berikut:

Untuk Logic Apps REST API, mulai dengan ikhtisar Azure Logic Apps REST API.

Struktur templat

Di tingkat atas, templat Resource Manager mengikuti struktur ini, yang sepenuhnya dijelaskan dalam topik struktur templat dan sintaks 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": {}
}

Untuk templat aplikasi logika, Anda utamanya bekerja dengan objek templat ini:

Atribut Deskripsi
parameters Deklarasikan parameter templat untuk menerima nilai yang akan digunakan saat membuat dan mengkustomisasi sumber daya untuk penyebaran di Azure. Misalnya, parameter ini menerima nilai untuk nama dan lokasi aplikasi logika Anda, koneksi, dan sumber daya lain yang diperlukan untuk penyebaran. Anda dapat menyimpan nilai parameter ini dalam file parameter, yang dijelaskan nanti dalam topik ini. Untuk detail umum, lihat Parameter - Struktur dan sintaks templat Resource Manager.
resources Tentukan sumber daya untuk membuat atau memperbarui dan menyebar ke grup sumber daya Azure, seperti aplikasi logika Anda, koneksi, akun penyimpanan Azure, dan sebagainya. Untuk detail umum, lihat Parameter - Struktur dan sintaks templat Resource Manager.

Templat aplikasi logika Anda menggunakan format nama file ini:

<logic-app-name>.json

Penting

Sintaks templat peka huruf besar/kecil, jadi pastikan Anda menggunakan casing yang konsisten.

Parameter templat

Templat aplikasi logika memiliki beberapa objek parameters yang ada di tingkat yang berbeda dan melakukan fungsi yang berbeda. Misalnya, di tingkat atas, Anda dapat mendeklarasikan parameter templat agar diterima dan digunakan nilai pada penerapan saat membuat dan menggunakan sumber daya di Azure, misalnya:

  • Aplikasi logika Anda

  • Koneksi yang digunakan aplikasi logika Anda untuk mengakses layanan dan sistem lain melalui konektor terkelola

  • Sumber daya lain yang dibutuhkan aplikasi logika Anda untuk penyebaran

    Misalnya, jika aplikasi logika Anda menggunakan akun integrasi untuk skenario business-to-business (B2B), objek parameters tingkat atas template mendeklarasikan parameter yang menerima ID sumber daya untuk akun integrasi tersebut.

Berikut adalah struktur umum dan sintaks untuk definisi parameter, yang sepenuhnya dijelaskan oleh Parameter - Struktur dan sintaks templat Resource Manager:

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

Contoh ini hanya memperlihatkan parameter templat untuk nilai yang digunakan untuk membuat dan menggunakan sumber daya ini di Azure:

  • Nama dan lokasi untuk aplikasi logika Anda
  • ID yang digunakan untuk akun integrasi yang ditautkan ke aplikasi logika
{
   "$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": {}
}

Kecuali untuk parameter yang menangani nilai yang sensitif atau harus diamankan, seperti nama pengguna, kata sandi, dan rahasia, semua parameter ini mencakup atribut defaultValue, meskipun dalam beberapa kasus, nilai default-nya nilai kosong. Nilai penyebaran yang digunakan untuk parameter templat ini disediakan oleh file parameter sampel yang dijelaskan nanti dalam topik ini.

Untuk informasi selengkapnya tentang mengamankan parameter templat, lihat topik-topik ini:

Objek templat lain sering mereferensikan parameter templat sehingga mereka dapat menggunakan nilai yang melewati parameter templat, misalnya:

  • Objek sumber daya templat Anda, yang dijelaskan nanti dalam topik ini, menentukan setiap sumber daya di Azure yang ingin Anda buat dan terapkan, seperti definisi sumber daya aplikasi logika Anda. Sumber daya ini sering menggunakan nilai parameter templat, seperti nama dan lokasi aplikasi logika Anda serta informasi koneksi.

  • Pada tingkat yang lebih dalam pada definisi sumber daya aplikasi logika Anda, objek parameter definisi alur kerja Anda mendeklarasikan parameter agar dapat digunakan nilai pada runtime bahasa umum aplikasi logika Anda. Misalnya, Anda dapat mendeklarasikan parameter definisi alur kerja untuk nama pengguna dan kata sandi yang digunakan pemicu HTTP untuk autentikasi. Untuk menentukan nilai untuk parameter definisi alur kerja, gunakan objek parameters yang berada di luar definisi alur kerja Anda tetapi masih di dalam definisi sumber daya aplikasi logika Anda. Di objek parameters luar ini, Anda dapat mereferensikan parameter templat yang dideklarasikan sebelumnya, yang dapat menerima nilai saat penyebaran dari file parameter.

Saat mereferensikan parameter, ekspresi dan fungsi templat menggunakan sintaks yang berbeda dan berperilaku berbeda dari ekspresi dan fungsi definisi alur kerja. Untuk informasi selengkapnya tentang perbedaan ini, lihat Referensi ke parameter nanti dalam topik ini.

Praktik terbaik - parameter template

Berikut adalah beberapa praktik terbaik untuk mendefinisikan parameter:

  • Deklarasikan parameter hanya untuk nilai yang bervariasi, berdasarkan kebutuhan penyebaran Anda. Jangan mendeklarasikan parameter untuk nilai yang tetap sama dalam berbagai persyaratan penyebaran.

  • Sertakan atribut defaultValue, yang dapat menentukan nilai kosong, untuk semua parameter kecuali untuk nilai yang sensitif atau harus diamankan. Selalu gunakan parameter aman untuk nama pengguna, kata sandi, dan rahasia. Untuk menyembunyikan atau melindungi nilai parameter sensitif, ikuti panduan dalam topik berikut:

  • Untuk membedakan nama parameter templat dengan nama parameter definisi alur kerja, Anda bisa menggunakan nama parameter templat deskriptif, misalnya: TemplateFabrikamPassword

Untuk praktik terbaik templat lainnya, lihat Praktik terbaik untuk parameter templat.

File parameter templat

Untuk menyediakan nilai untuk parameter template, simpan nilai tersebut dalam file parameter. Dengan demikian, Anda dapat menggunakan file parameter yang berbeda berdasarkan kebutuhan penyebaran Anda. Berikut adalah format nama file yang akan digunakan:

  • Nama file pola dasar aplikasi logika: <logic-app-name>.json
  • Nama file parameter: <logic-app-name>.parameters.json

Berikut adalah struktur di dalam file parameter, yang mencakup referensi brankas kunci untuk melewati nilai parameter aman dengan 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>
   }
}

Contoh file parameter ini menentukan nilai untuk parameter templat yang dideklarasikan sebelumnya dalam topik ini:

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

Sumber daya templat

Template Anda memiliki objek resources, yang merupakan array yang berisi definisi untuk setiap sumber daya untuk dibuat dan diterapkan di Azure, misalnya definisi sumber daya aplikasi logika Anda, definisi sumber daya koneksi, dan sumber daya lain yang dibutuhkan aplikasi logika Anda untuk penyebaran.

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

Catatan

Templat dapat menyertakan definisi sumber daya untuk beberapa aplikasi logika, jadi pastikan bahwa semua sumber daya aplikasi logika Anda menentukan grup sumber daya Azure yang sama. Saat Anda menyebarkan templat ke grup sumber daya Azure dengan menggunakan Visual Studio, Anda akan ditanyai aplikasi logika mana yang ingin Anda buka. Selain itu, proyek grup sumber daya Azure Anda bisa berisi lebih dari satu templat, jadi pastikan Anda memilih file parameter yang benar saat diminta.

Melihat definisi sumber daya

Untuk meninjau definisi sumber daya untuk semua sumber daya dalam grup sumber daya Azure, unduh aplikasi logika Anda dari Azure ke Visual Studio, yang merupakan cara termudah untuk membuat templat aplikasi logika parameter yang valid yang sebagian besar siap untuk penyebaran.

Untuk informasi umum tentang sumber daya templat dan atributnya, lihat topik-topik ini:

Definisi sumber daya aplikasi logika

Definisi sumber daya alur kerja dalam templat aplikasi logika Anda dimulai dengan objek properties, yang menyertakan informasi ini:

  • Status aplikasi logika Anda saat penyebaran
  • ID untuk setiap akun integrasi yang digunakan oleh aplikasi logika Anda
  • Definisi alur kerja aplikasi logika Anda
  • Objek parameters yang mengatur nilai yang akan digunakan pada runtime bahasa umum
  • Informasi sumber daya lain tentang aplikasi logika Anda, misalnya nama, jenis, lokasi, pengaturan konfigurasi runtime bahasa umum apa pun, dan sebagainya
{
   "$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": {}
}

Berikut adalah atribut yang spesifik untuk definisi sumber daya aplikasi logika Anda:

Atribut Diperlukan Jenis Deskripsi
state Ya Untai (karakter) Status aplikasi logika Anda saat penyebaran dengan Enabled yang berarti aplikasi logika Anda aktif dan Disabled yang berarti aplikasi logika Anda tidak aktif. Misalnya, jika Anda merasa aplikasi logika Anda belum siap untuk live tetapi Anda ingin menyebarkan versi draf, Anda dapat menggunakan opsi Disabled tersebut.
integrationAccount Tidak Objek Jika aplikasi logika Anda menggunakan akun integrasi, yang menyimpan artefak untuk skenario business-to-business (B2B), objek ini menyertakan atribut id, yang menentukan ID untuk akun integrasi.
definition Ya Objek Definisi alur kerja yang mendasari aplikasi logika Anda, yang merupakan objek yang sama yang muncul dalam tampilan kode dan sepenuhnya dijelaskan dalam topik Referensi skema untuk Bahasa Definisi Alur Kerja. Dalam definisi alur kerja ini, objek parameters mendeklarasikan parameter agar digunakan nilai pada runtime bahasa umum aplikasi logika. Untuk informasi selengkapnya, lihat Definisi dan parameter alur kerja.

Untuk melihat atribut dalam definisi alur kerja aplikasi logika Anda, beralih dari "tampilan desain" ke "tampilan kode" di portal Microsoft Azure atau Visual Studio, atau dengan menggunakan alat seperti Azure Resource Explorer.

parameters Tidak Objek Nilai parameter definisi alur kerja yang akan digunakan pada runtime bahasa umum aplikasi logika. Definisi parameter untuk nilai-nilai ini muncul di dalam objek parameter definisi alur kerja Anda. Selain itu, jika aplikasi logika Anda menggunakan konektor terkelola untuk mengakses layanan dan sistem lain, objek ini menyertakan objek $connections yang mengatur nilai koneksi yang akan digunakan pada runtime bahasa umum.
accessControl Tidak Objek Untuk menentukan atribut keamanan untuk aplikasi logika Anda, seperti membatasi akses IP untuk meminta pemicu atau menjalankan input dan output riwayat. Untuk informasi selengkapnya, lihat Mengamankan akses ke aplikasi logika.
runtimeConfiguration Tidak Objek Untuk menentukan properti operationOptions apa pun yang mengontrol cara aplikasi logika Anda berperilaku pada durasi. Misalnya, Anda dapat menjalankan aplikasi logika Anda dalam mode throughput tinggi.

Untuk informasi selengkapnya tentang definisi sumber daya untuk objek Logic Apps ini, lihat Jenis sumber daya Microsoft.Logic:

Definisi dan parameter alur kerja

Definisi alur kerja aplikasi logika Anda muncul di objek definition, yang muncul di objek properties di dalam definisi sumber daya aplikasi logika Anda. Objek definition ini adalah objek yang sama yang muncul dalam tampilan kode dan sepenuhnya dijelaskan dalam topik Referensi skema untuk Bahasa Definisi Alur Kerja. Definisi alur kerja Anda menyertakan objek deklarasi parameters dalam di mana Anda dapat menentukan parameter baru atau mengedit parameter yang sudah ada untuk nilai yang digunakan oleh definisi alur kerja Anda pada runtime bahasa umum. Anda kemudian dapat mereferensikan parameter ini di dalam pemicu atau tindakan di alur kerja Anda. Secara default, objek parameters ini kosong kecuali aplikasi logika Anda membuat koneksi ke layanan dan sistem lain melalui konektor terkelola.

Untuk menentukan nilai untuk parameter definisi alur kerja, gunakan objek parameters yang berada di luar definisi alur kerja Anda tetapi masih di dalam definisi sumber daya aplikasi logika Anda. Di objek parameters luar ini, Anda dapat mereferensikan parameter templat Anda yang dideklarasikan sebelumnya, yang dapat menerima nilai saat penyebaran dari file parameter.

Tip

Sebagai praktik terbaik, jangan langsung mereferensikan parameter templat, yang dievaluasi saat penyebaran, dari dalam definisi alur kerja. Sebagai gantinya, tentukan nilai untuk parameter definisi alur kerja, yang kemudian dapat Anda set dalam objek parameters yang berada di luar definisi alur kerja Anda tetapi masih di dalam definisi sumber daya aplikasi logika Anda. Untuk informasi selengkapnya, lihat Referensi ke parameter.

Sintaks ini memperlihatkan tempat Anda dapat mendeklarasikan parameter pada tingkat definisi templat dan alur kerja bersama dengan tempat Anda dapat mengatur nilai parameter tersebut dengan mereferensikan parameter definisi templat dan alur kerja:

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

Mengamankan parameter definisi alur kerja

Untuk parameter definisi alur kerja yang menangani informasi sensitif, kata sandi, kunci akses, atau rahasia pada runtime bahasa umum, deklarasikan atau edit parameter untuk menggunakan parameter jenis securestring atau secureobject. Anda dapat mereferensikan parameter ini di seluruh dan di dalam definisi alur kerja Anda. Di tingkat teratas templat, deklarasikan parameter yang memiliki jenis yang sama untuk menangani informasi ini saat penyebaran.

Untuk mengatur nilai parameter definisi alur kerja, gunakan objek parameters yang berada di luar definisi alur kerja Anda tetapi masih di dalam definisi sumber daya aplikasi logika Anda untuk mereferensikan parameter templat. Terakhir, untuk meneruskan nilai ke parameter templat Anda saat penyebaran, simpan nilai tersebut di Azure Key Vault dan referensikan brankas kunci tersebut dalam file parameter yang digunakan oleh templat Anda saat penyebaran.

Contoh templat ini memperlihatkan bagaimana Anda dapat menyelesaikan tugas-tugas ini dengan mendefinisikan parameter aman bila diperlukan sehingga Anda dapat menyimpan nilainya di Azure Key Vault:

  • Deklarasikan parameter aman untuk nilai yang digunakan untuk mengautentikasi akses.
  • Gunakan nilai-nilai ini di tingkat definisi templat dan alur kerja.
  • Berikan nilai ini dengan menggunakan file parameter.

Templat

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

File parameter

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

Praktik terbaik - parameter definisi alur kerja

Untuk memastikan bahwa Logic App Designer dapat dengan benar memperlihatkan parameter definisi alur kerja, ikuti praktik terbaik ini:

Untuk informasi selengkapnya tentang parameter definisi alur kerja, lihat Parameter - Bahasa Definisi Alur Kerja.

Definisi sumber daya koneksi

Saat aplikasi logika Anda membuat dan menggunakan koneksi ke layanan dan sistem lain dengan menggunakan konektor terkelola, objek resources templat Anda berisi definisi sumber daya untuk koneksi tersebut. Meskipun Anda membuat koneksi dari dalam aplikasi logika, koneksi adalah sumber daya Azure yang terpisah dengan definisi sumber dayanya sendiri. Untuk meninjau definisi sumber daya koneksi, unduh aplikasi logika Anda dari Azure ke Visual Studio, yang merupakan cara termudah untuk membuat templat aplikasi logika parameter yang valid yang sebagian besar siap untuk penyebaran.

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

Definisi sumber daya koneksi mereferensikan parameter tingkat atas templat untuk nilainya sehingga Anda dapat menyediakan nilai-nilai ini saat penyebaran dengan menggunakan file parameter. Pastikan bahwa koneksi menggunakan grup sumber daya Azure dan lokasi yang sama dengan aplikasi logika Anda.

Berikut adalah contoh definisi sumber daya untuk koneksi Office 365 Outlook dan parameter templat terkait:

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

Definisi sumber daya aplikasi logika Anda juga bekerja dengan definisi sumber daya koneksi dengan cara berikut:

  • Di dalam definisi alur kerja Anda, objek parameters mendeklarasikan parameter $connections untuk nilai koneksi yang digunakan pada runtime bahasa umum aplikasi logika. Selain itu, pemicu atau tindakan yang membuat koneksi menggunakan nilai terkait yang melewati parameter $connections ini.

  • Di luar definisi alur kerja Anda tetapi masih di dalam definisi sumber daya aplikasi logika Anda, objek parameters lain mengatur nilai yang akan digunakan pada runtime bahasa umum untuk parameter $connections dengan mereferensikan parameter templat terkait. Nilai-nilai ini menggunakan ekspresi templat untuk mereferensikan sumber daya yang menyimpan metadata dengan aman untuk koneksi di aplikasi logika Anda.

    Misalnya, metadata dapat menyertakan string koneksi dan token akses, yang dapat Anda simpan di Azure Key Vault. Untuk meneruskan nilai tersebut ke parameter templat Anda, Anda mereferensikan brankas kunci tersebut dalam file parameter yang digunakan oleh templat Anda saat penyebaran. Untuk informasi selengkapnya tentang perbedaan dalam merujuk parameter, lihat Referensi ke parameter nanti dalam topik ini.

    Saat Anda membuka definisi alur kerja aplikasi logika Anda dalam tampilan kode melalui portal Microsoft Azure atau Visual Studio, objek $connections muncul di luar definisi alur kerja Anda tetapi pada tingkat yang sama. Urutan dalam tampilan kode ini membuat parameter ini lebih mudah direferensikan saat Anda memperbarui definisi alur kerja secara manual:

    {
       "$connections": {<workflow-definition-parameter-connection-values-runtime},
       "definition": {<workflow-definition>}
    }
    
  • Definisi sumber daya aplikasi logika Anda memiliki objek dependsOn yang menentukan dependensi pada koneksi yang digunakan oleh aplikasi logika Anda.

Setiap koneksi yang Anda buat memiliki nama unik di Azure. Saat Anda membuat beberapa koneksi ke layanan atau sistem yang sama, setiap nama koneksi ditambahkan dengan angka, yang bertambah dengan setiap koneksi baru yang dibuat, misalnya, office365, office365-1, dan seterusnya.

Contoh ini memperlihatkan interaksi antara definisi sumber daya aplikasi logika Anda dan definisi sumber daya koneksi untuk 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": {}
}

Mengamankan parameter koneksi

Untuk parameter koneksi yang menangani informasi sensitif, kata sandi, kunci akses, atau rahasia, definisi sumber daya koneksi menyertakan objek parameterValues yang menentukan nilai ini dalam format pasangan nama-nilai. Untuk menyembunyikan informasi ini, Anda dapat mendeklarasikan atau mengedit parameter templat untuk nilai-nilai ini dengan menggunakan jenis parameter securestring atau secureobject. Anda kemudian dapat menyimpan informasi tersebut di Azure Key Vault. Untuk meneruskan nilai tersebut ke parameter templat Anda, Anda mereferensikan brankas kunci tersebut dalam file parameter yang digunakan oleh templat Anda saat penyebaran.

Berikut adalah contoh yang menyediakan nama akun dan kunci akses untuk koneksi Azure Blob Storage:

File parameter

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

Templat

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

Mengautentikasi koneksi

Setelah penyebaran, aplikasi logika Anda berfungsi secara end-to-end dengan parameter yang valid. Namun, Anda masih harus mengotorisasi koneksi OAuth apa pun untuk menghasilkan token akses yang valid untuk mengautentikasi kredensial Anda. Untuk informasi selengkapnya, lihat Mengotorisasi koneksi OAuth.

Beberapa koneksi mendukung menggunakan perwakilan layanan Azure Active Directory (Microsoft Azure AD) untuk mengotorisasi koneksi untuk aplikasi logika yang terdaftar di Microsoft Azure AD. Misalnya, definisi sumber daya koneksi Azure Data Lake ini menunjukkan cara mereferensikan parameter templat yang menangani informasi perwakilan layanan dan bagaimana templat mendeklarasikan parameter ini:

Definisi sumber daya koneksi

{
   <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')]"
      }
   }
}
Atribut Deskripsi
token:clientId Aplikasi atau ID klien yang terkait dengan perwakilan layanan Anda
token:clientSecret Nilai kunci yang terkait dengan perwakilan layanan Anda
token:TenantId ID direktori untuk penyewa Microsoft Azure AD Anda
token:grantType Jenis pemberian yang diminta, yang harus client_credentials. Untuk informasi selengkapnya, lihat Platform identitas Microsoft dan alur kredensial klien OAuth 2.0.

Definisi parameter templat

Objek parameters tingkat atas templat mendeklarasikan parameter ini untuk koneksi contoh:

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

Untuk informasi selengkapnya tentang bekerja dengan perwakilan layanan, lihat topik-topik berikut:

Referensi ke parameter

Untuk mereferensikan parameter templat, Anda bisa menggunakan ekspresi templat dengan fungsi templat, yang dievaluasi saat penyebaran. Ekspresi templat menggunakan kurung siku ( [] ):

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

Untuk mereferensikan parameter definisi alur kerja, Anda menggunakan ekspresi dan fungsi Bahasa Definisi Alur Kerja, yang dievaluasi pada runtime bahasa umum. Anda mungkin menyadari bahwa beberapa fungsi templat dan fungsi definisi alur kerja memiliki nama yang sama. Ekspresi definisi alur kerja dimulai dengan simbol "at" ( @ ):

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

Anda dapat meneruskan nilai parameter templat ke definisi alur kerja agar digunakan aplikasi logika Anda pada runtime bahasa umum. Namun, hindari menggunakan parameter, ekspresi, dan sintaks templat dalam definisi alur kerja Anda karena Logic App Designer tidak mendukung elemen templat. Selain itu, sintaks dan ekspresi templat dapat mempersulit kode Anda karena perbedaan saat ekspresi dievaluasi.

Sebaliknya, ikuti langkah-langkah umum ini untuk mendeklarasikan dan mereferensikan parameter definisi alur kerja untuk digunakan pada runtime bahasa umum, mendeklarasikan dan mereferensikan parameter templat untuk digunakan saat penyebaran, dan menentukan nilai yang akan di-pass in saat penyebaran dengan menggunakan file parameter. Untuk detail selengkapnya, lihat bagian Definisi dan parameter alur kerja sebelumnya dalam topik ini.

  1. Buat templat Anda dan deklarasikan parameter templat untuk diterima dan digunakan nilai saat penyebaran.

  2. Dalam definisi alur kerja Anda, deklarasikan parameter untuk diterima dan digunakan nilai pada runtime bahasa umum. Anda kemudian dapat mereferensikan nilai-nilai ini di seluruh dan di dalam definisi alur kerja Anda.

  3. Di objek parameters yang berada di luar definisi alur kerja Anda tetapi masih berada di dalam definisi sumber daya aplikasi logika Anda, atur nilai untuk parameter definisi alur kerja Anda dengan mereferensikan parameter templat terkait. Dengan demikian, Anda dapat meneruskan nilai parameter templat ke parameter definisi alur kerja Anda.

  4. Dalam file parameter, tentukan nilai untuk digunakan templat Anda saat penyebaran.

Templat contoh lengkap

Berikut adalah templat sampel parameter yang digunakan oleh contoh topik ini:

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

Langkah berikutnya