Latihan - Menyebarkan dan mengekspor alur kerja Azure Logic Apps menggunakan templat ARM

Selesai

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

  1. Salin templat dasar yang kita gunakan pada latihan sebelumnya dengan perintah cp berikut:

    cp basic-template.json template-with-params.json
    
  2. 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.

  3. Ganti bagian parameters dalam templat dengan cuplikan kode berikut, yang menambahkan dua parameter baru, logicAppName dan location:

    "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 templat resourceGroup(). 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.

  4. name Ganti bidang dan location di bagian sumber daya templat untuk menggunakan parameter baru kami seperti yang ditunjukkan dalam cuplikan berikut:

    "name": "[parameters('logicAppName')]",
    "location": "[parameters('location')]",
    
  5. Ganti bagian outputs di bagian bawah templat dengan kode berikut. Kami memperbarui nilai variabel kerangka logicAppUrl untuk juga menggunakan parameter logicAppName 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]"
        }
     }
    
  6. 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

  1. Buat file baru bernama params.json di editor kode bawaan dengan perintah berikut:

    code params.json
    
  2. Tempelkan JSON berikut ke params.json, dan tekan Ctrl + S untuk menyimpan perubahan Anda.

    { 
        "logicAppName": { 
            "value": "myLogicApp" 
        } 
    }
    

Memvalidasi templat kami

  1. 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

  1. 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 nilai Succeeded.

  2. 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.

  1. 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 nilai Succeeded.

  2. 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!.

  3. 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.

  1. Buka template-with-params.json di editor bawaan dengan menjalankan perintah berikut di Cloud Shell:

    code template-with-params.json
    
  2. 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.

  3. 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 fungsi int() konversi.

  4. Tekan Ctrl + S untuk menyimpan semua perubahan ke template-with-params.json.

  5. 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"}}'
    
  6. 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 nilai Succeeded.

  7. Untuk melihat aplikasi berjalan, temukan nilai logicAppUrl di hasil JSON. Pilih URL dan tempelkan ke jendela browser baru.

  8. 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:

    Sceenshot of web browser displaying response from our app called calculate area.

  9. 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