Latihan - Menyebarkan dan mengekspor alur kerja Azure Logic Apps menggunakan templat ARM
Dalam latihan sebelumnya, kami menerapkan aplikasi logika menggunakan templat dasar Azure Resource Manager. Templat ini tidak fleksibel karena semuanya di-hardcode. Misalnya, untuk mengubah nama alur kerja atau lokasi penyebaran aplikasi, Anda harus mengedit templat. Dalam skenario di mana Anda memiliki beberapa penerapan di lingkungan skrip, mengedit templat secara manual menjadi rumit. Pendekatan yang lebih baik adalah memasok nilai sebagai parameter untuk menyesuaikan penyebaran sumber daya.
Perbarui templat kami untuk menggunakan parameter templat
Salin templat dasar yang kita gunakan pada latihan sebelumnya dengan perintah
cp
berikut:cp basic-template.json template-with-params.json
Buka kerangka di editor bawaan dengan perintah
code
berikut:code template-with-params.json
Langkah pertama adalah menambahkan parameter sehingga kita dapat dengan mudah menyesuaikan nama dan lokasi aplikasi tempat aplikasi berjalan.
Ganti bagian
parameters
dalam templat dengan cuplikan kode berikut, yang menambahkan dua parameter baru,logicAppName
danlocation
:"parameters": { "logicAppName": { "type": "string", "metadata": { "description": "The name of the logic app to create." } }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", "metadata": { "description": "Location for all resources." } } },
Kedua parameter adalah string. Kami tidak memberikan nilai default untuk
logicAppName
parameter , yang berarti Anda perlu menyediakannya pada waktu penyebaran. Sebaliknya,location
bersifat opsional karena kami menyediakan nilai default.Nilai default untuk parameter
location
adalah lokasi untuk grup sumber daya tempat aplikasi diterapkan. Kami mendapatkan nilai tersebut dengan mereferensikan properti lokasi dari grup sumber daya yang ditampilkan oleh fungsi templatresourceGroup()
. Ekspresi dimulai dan diakhiri dengan tanda kurung kiri dan kanan ([ ]
) masing-masing. Nilai ekspresi dievaluasi saat templat selesai disebarkan. Ekspresi dapat mengembalikan string, bilangan bulat, boolean, array, atau objek. Dalam templat, Anda dapat menentukan 256 parameter sebagai maksimum.Sekarang setelah kita mendefinisikan dua parameter baru, kita akan menggunakannya dalam templat dengan mengganti nilai hardcoded dengan referensi ke parameter baru.
name
Ganti bidang danlocation
di bagian sumber daya templat untuk menggunakan parameter baru kami seperti yang ditunjukkan dalam cuplikan berikut:"name": "[parameters('logicAppName')]", "location": "[parameters('location')]",
Ganti bagian
outputs
di bagian bawah templat dengan kode berikut. Kami memperbarui nilai variabel kerangkalogicAppUrl
untuk juga menggunakan parameterlogicAppName
seperti yang ditunjukkan dalam cuplikan berikut:"outputs": { "logicAppUrl": { "type": "string", "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', parameters('logicAppName')), '/triggers/manual'), '2017-07-01').value]" } }
Tekan Ctrl + S untuk menyimpan semua perubahan ke template-with-params.json.
Terapkan sumber daya aplikasi logika dengan templat berparameter
Ada dua cara untuk menyediakan parameter ke templat kami selama penyebaran menggunakan bendera --parameters
di perintah az deployment group create
. Kita dapat meneruskan URI file parameter jarak jauh, atau nama file lokal. Mari kita gunakan file lokal.
Membuat parameter file JSON
Buat file baru bernama
params.json
di editor kode bawaan dengan perintah berikut:code params.json
Tempelkan JSON berikut ke params.json, dan tekan Ctrl + S untuk menyimpan perubahan Anda.
{ "logicAppName": { "value": "myLogicApp" } }
Memvalidasi templat kami
Dari Cloud Shell, jalankan
az deployment group validate
untuk memvalidasi templat:az deployment group validate \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters @params.json
Argumen
--template-file
menunjuk ke templat lokal. Nama file templat adalah template-with-params.json.Anda akan melihat blok JSON besar sebagai output, yang memberi tahu Anda bahwa templat melewati validasi.
Azure Resource Manager mengisi parameter templat dan memeriksa apakah templat akan berhasil dijalankan dalam langganan Anda.
Jika validasi gagal, Anda akan melihat deskripsi terperinci tentang kegagalan dalam output.
Menyebarkan templat dengan parameter dari file lokal
Di Cloud Shell, jalankan perintah berikut untuk menerapkan sumber daya aplikasi logika dengan nama aplikasi yang diambil dari file params.json. Dalam file params.json, parameter
location
tidak disetel, jadi yang digunakan adalah default.az deployment group create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters @params.json
Penyebaran akan memakan waktu beberapa saat, dan Anda dapat melihat kemajuan di baris perintah Cloud Shell. Setelah penyebaran selesai, Anda akan
provisioningState
di hasil JSON dengan nilaiSucceeded
.Untuk melihat aplikasi berjalan, temukan nilai logicAppUrl di hasil JSON. Pilih URL atau salin dan tempelkan ke jendela browser baru. Halaman akan menampilkan pesan Halo Templat Azure Logic Apps!.
Menyebarkan templat dengan parameter dari baris perintah
Sebagai ganti mengedit file parameter setiap kali ingin menyebarkan dari baris perintah, kita dapat menyediakan parameter dalam string JSON pada baris perintah.
Jalankan perintah berikut di Cloud Shell untuk menyebarkan sumber daya aplikasi logika dengan nama aplikasi dan lokasinya yang diumpankan sebagai string JSON pada baris perintah:
az deployment group create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters '{ "logicAppName": {"value":"MyLogicApp2"}, "location": {"value":"East US"}}'
Penyebaran akan memakan waktu beberapa saat, dan Anda dapat melihat kemajuan di baris perintah Cloud Shell. Setelah penyebaran selesai, Anda akan
provisioningState
di hasil JSON dengan nilaiSucceeded
.Untuk melihat aplikasi berjalan, temukan nilai logicAppUrl di hasil JSON. Pilih URL dan tempelkan ke jendela browser baru. Halaman akan menampilkan pesan Halo Templat Azure Logic Apps!.
Jalankan perintah berikut untuk mencantumkan semua alur kerja Azure Logic Apps yang telah kami sebarkan sejauh ini:
az resource list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --resource-type Microsoft.Logic/workflows \ --query [*].[name,location] --output tsv
Perintah ini mencantumkan tiga alur kerja Azure Logic Apps yang telah kami sebarkan sejauh ini, semuanya dari templat.
Memperbarui tindakan aplikasi di templat Azure Resource Manager
Sekarang, mari alihkan perhatian untuk membuat aplikasi kami melakukan sedikit lebih dari sekadar mengirim kembali pesan statis kepada kami. Kami akan menyimpan aplikasi sebagai alur kerja yang dipicu HTTP, yang masih akan mengembalikan respons HTTP. Mari kita teruskan beberapa nilai dengan permintaan, dan minta aplikasi melakukan penghitungan untuk kita. Kami akan melakukan perhitungan luas dasar. Dengan asumsi input yang kita lewati adalah tinggi dan lebar persegi panjang, kita akan mengembalikan area. Kami kemudian akan menerapkan aplikasi baru dan melihatnya berjalan.
Buka template-with-params.json di editor bawaan dengan menjalankan perintah berikut di Cloud Shell:
code template-with-params.json
relativePath
Tambahkan bidang ke bagian input pemicu permintaan HTTP kami seperti yang ditunjukkan dalam cuplikan berikut:"inputs": { "method": "GET", "relativePath": "{width}/{height}", "schema": {} }
Entri
relativePath
menentukan parameter yang kami inginkan untuk diterima URL titik akhir HTTP kami. Dalam hal ini, kami mendefinisikan dua parameter, lebar dan tinggi. Kami akan menggunakan nilai parameter ini untuk menghitung area dan mengembalikan hasilnya.Perbarui isi tindakan Respons dengan baris berikut:
"body": "Response from @{workflow().name} Total area = @{mul( int(triggerOutputs()['relativePathParameters']['height']) , int(triggerOutputs()['relativePathParameters']['width']) )}",
Respons kami yang diperbarui melakukan tugas-tugas berikut:
Mencetak nama sumber daya aplikasi logika. Respons memanggil fungsi
workflow()
untuk mengembalikan informasi tentang alur kerja. Dari hasil itu, kami mereferensikan properti nama.Mengembalikan produk dari ekuivalen bilangan bulat untuk nilai string tinggi dan lebar dari parameter URL. Tugas ini menggunakan fungsi
mul()
dan fungsiint()
konversi.
Tekan Ctrl + S untuk menyimpan semua perubahan ke template-with-params.json.
Validasi templat setelah perubahan ini dengan
az deployment group validate
perintah di Cloud Shell. Dalam contoh ini, kami mengatur nama aplikasi ke CalculateArea dengan menggunakan parameter sebaris.az deployment group validate \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
Jalankan perintah berikut untuk menyebarkan perubahan kami ke aplikasi logika bernama CalculateArea. Kita akan menghilangkan nilai untuk
location
parameter dan hanya menggunakan default.az deployment group create \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --template-file template-with-params.json \ --parameters '{ "logicAppName": {"value":"CalculateArea"}}'
Penyebaran akan memakan waktu beberapa saat, tetapi Anda dapat melihat kemajuan di baris perintah Cloud Shell. Setelah penyebaran selesai, Anda akan
provisioningState
di hasil JSON dengan nilaiSucceeded
.Untuk melihat aplikasi berjalan, temukan nilai logicAppUrl di hasil JSON. Pilih URL dan tempelkan ke jendela browser baru.
Perbarui URL di browser, ubah
/triggers/manual/paths/invoke?api
menjadi/triggers/manual/paths/invoke/{width}/{height}?api
, di mana {width} dan {height} adalah nilai bilangan bulat untuk lebar dan tinggi area yang ingin kami hitung. Contohnya,/triggers/manual/paths/invoke/6/7?api
. Respons dari aplikasi akan mencantumkan nama alur kerja dan area terhitung, seperti yang ditunjukkan pada cuplikan layar berikut:Jalankan perintah berikut untuk mencantumkan semua alur kerja Azure Logic Apps yang telah kami sebarkan sejauh ini:
az resource list \ --resource-group "<rgn>[sandbox resource group name]</rgn>" \ --resource-type Microsoft.Logic/workflows \ --query [*].[name,location] --output tsv
Dalam latihan ini, kami memperkenalkan lebih banyak fleksibilitas ke templat kami dengan parameter. Kami menyediakan parameter tersebut pada baris perintah dan menggunakan file lokal. Kami juga memperbarui tindakan yang dijalankan alur kerja sederhana kami, dengan langsung mengubah body
respons yang kami kirim kembali.
Anda dapat mengunduh parameter dan file templat dari GitHub dengan perintah curl
berikut di Cloud Shell.
curl https://github.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/blob/master/calculate-area/params.json > params-final.json
curl https://github.com/MicrosoftDocs/mslearn-logic-apps-and-arm-templates/blob/master/calculate-area/template.json > template-with-params-final.json