Tutorial: Membuat aplikasi terkelola dengan tindakan dan sumber daya khusus

Dalam tutorial ini, Anda membuat aplikasi terkelola Anda sendiri dengan tindakan dan sumber daya kustom. Aplikasi terkelola akan berisi tindakan kustom Overview di halaman, jenis sumber daya kustom yang ditampilkan sebagai item menu terpisah dan Table of Content tindakan konteks kustom pada halaman sumber daya kustom.

Tutorial ini mencakup langkah-langkah berikut:

  • Menulis file definisi antarmuka pengguna untuk membuat instans aplikasi terkelola
  • Templat penggunaan penulis dengan Penyedia Kustom Azure, Akun Azure Storage Azure, dan Fungsi Azure
  • Artefak definisi tampilan penulis dengan tindakan kustom dan sumber daya
  • Buat definisi aplikasi terkelola.
  • Menerapkan instans aplikasi terkelola
  • Melakukan tindakan kustom dan membuat sumber daya kustom

Prasyarat

Untuk menyelesaikan tutorial ini, Anda perlu mengetahui:

Definisi antarmuka pengguna

Dalam tutorial ini, Anda membuat aplikasi terkelola dan grup sumber daya terkelolanya akan berisi instans penyedia kustom, akun penyimpanan, dan fungsi. Fungsi Azure yang digunakan dalam contoh ini mengimplementasikan API yang menangani operasi penyedia kustom untuk tindakan dan sumber daya. Akun Azure Storage digunakan sebagai penyimpanan dasar untuk sumber daya penyedia kustom Anda.

Definisi antarmuka pengguna untuk membuat instans aplikasi terkelola funcname mencakup storagename dan elemen input. Nama akun Azure Storage dan nama fungsi harus unik secara global. Secara default file fungsi akan disebarkan dari paket fungsi sampel, tetapi Anda dapat mengubahnya dengan menambahkan elemen input untuk tautan paket dicreateUiDefinition.js pada:

{
  "name": "funcname",
  "type": "Microsoft.Common.TextBox",
  "label": "Name of the function to be created",
  "toolTip": "Name of the function to be created",
  "visible": true,
  "constraints": {
    "required": true
  }
},
{
  "name": "storagename",
  "type": "Microsoft.Common.TextBox",
  "label": "Name of the storage to be created",
  "toolTip": "Name of the storage to be created",
  "visible": true,
  "constraints": {
    "required": true
  }
},
{
  "name": "zipFileBlobUri",
  "type": "Microsoft.Common.TextBox",
  "defaultValue": "https://github.com/Azure/azure-quickstart-templates/tree/master/quickstarts/microsoft.customproviders/custom-rp-with-function/artifacts/functionzip/functionpackage.zip",
  "label": "The Uri to the uploaded function zip file",
  "toolTip": "The Uri to the uploaded function zip file",
  "visible": true
}

dan output dalam createUiDefinition.jspada:

  "funcname": "[steps('applicationSettings').funcname]",
  "storageName": "[steps('applicationSettings').storagename]",
  "zipFileBlobUri": "[steps('applicationSettings').zipFileBlobUri]"

Contoh lengkap createUiDefinition.js pada sampel dapat ditemukan di Referensi: Artefak elemen antarmuka pengguna.

Templat dengan penyedia kustom

Untuk membuat instans aplikasi terkelola dengan penyedia kustom, Anda perlu menentukan sumber daya penyedia kustom dengan nama publik dan ketik Microsoft.CustomProviders/resourceProviders di mainTemplate.jsanda. Dalam sumber daya tersebut, Anda menentukan jenis dan tindakan sumber daya untuk layanan Anda. Untuk menerapkan fungsi Azure dan instans Akun Azure Storage menentukan sumber daya tipe Microsoft.Web/sites dan Microsoft.Storage/storageAccounts masing-masing.

Dalam tutorial ini, Anda akan membuat users satu jenis sumber ping daya, tindakan users/contextAction kustom, dan tindakan kustom yang akan dilakukan dalam konteks sumber users daya kustom. Untuk setiap jenis dan tindakan sumber daya memberikan titik akhir yang menunjuk ke fungsi dengan nama yang disediakan createUiDefinition.jspada. Tentukan peruteanTipe sebagaiProxy,Cache untuk tipe sumber daya dan untuk Proxy tindakan:

{
  "apiVersion": "[variables('customrpApiversion')]",
  "type": "Microsoft.CustomProviders/resourceProviders",
  "name": "[variables('customProviderName')]",
  "location": "[parameters('location')]",
  "properties": {
    "actions": [
      {
        "name": "ping",
        "routingType": "Proxy",
        "endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
      },
      {
        "name": "users/contextAction",
        "routingType": "Proxy",
        "endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
      }
    ],
    "resourceTypes": [
      {
        "name": "users",
        "routingType": "Proxy,Cache",
        "endpoint": "[listSecrets(resourceId('Microsoft.Web/sites/functions', parameters('funcname'), 'HttpTrigger1'), '2018-02-01').trigger_url]"
      }
    ]
  },
  "dependsOn": [
    "[concat('Microsoft.Web/sites/',parameters('funcname'))]"
  ]
}

Contoh lengkap mainTemplate.jspada sampel dapat ditemukan di Referensi: Penyebaran artefak templat.

Lihat artefak definisi

Untuk menentukan antarmuka pengguna yang menyertakan tindakan kustom dan sumber daya kustom di aplikasi terkelola Anda, Anda perlu penulis viewDefinition.json pada artefak. Untuk informasi selengkapnya tentang artefak definisi tampilan, lihat Menampilkan artefak definisi di Azure Managed Applications.

Dalam tutorial ini, Anda akan:

  • Halaman Gambaran Umum dengan tombol toolbar yang mewakili tindakan kustom TestAction dengan input teks dasar.
  • Halaman Pengguna yang mewakili tipe sumber daya kustom users.
  • Tindakan sumber daya kustom users/contextAction di Pengguna halaman yang akan dilakukan dalam konteks sumber daya kustom tipe users.

Contoh berikut menunjukkan konfigurasi tampilan untuk halaman "Gambaran Umum":

{
    "kind": "Overview",
    "properties": {
      "header": "Welcome to your Demo Azure Managed Application",
      "description": "This Managed application with Custom Provider is for demo purposes only.",
      "commands": [{
          "displayName": "Ping Action",
          "path": "/customping",
          "icon": "LaunchCurrent"
      }]
    }
  }

Contoh di bawah ini mencakup konfigurasi halaman sumber daya "Pengguna" dengan tindakan sumber daya kustom:

{
    "kind": "CustomResources",
    "properties": {
      "displayName": "Users",
      "version": "1.0.0.0",
      "resourceType": "users",
      "createUIDefinition": {
      },
      "commands": [{
        "displayName": "Custom Context Action",
        "path": "users/contextAction",
        "icon": "Start"
      }],
      "columns": [
        { "key": "properties.FullName", "displayName": "Full Name" },
        { "key": "properties.Location", "displayName": "Location", "optional": true }
      ]
    }
  }

Contoh lengkap viewDefinition.jspada sampel dapat ditemukan di Referensi: Lihat artefak definisi.

Definisi Aplikasi Terkelola

Ke paket artefak aplikasi terkelola berikut ke arsip zip dan unggah ke penyimpanan:

  • CreateUIDefinition.json
  • mainTemplate.jspada
  • viewDefinition.jspada

Semua berkas harus berada pada level root. Paket dengan artefak dapat disimpan di penyimpanan apa pun, misalnya gumpalan GitHub atau blob Akun Azure Storage Azure. Berikut adalah skrip untuk mengunggah paket aplikasi ke akun penyimpanan:

$resourceGroup="appResourcesGroup"
$storageName="mystorageaccount$RANDOM"

# Sign in to your Azure subscription
Connect-AzAccount
# Create resource group for managed application definition and application package
New-AzResourceGroup -Name $resourceGroup -Location eastus

# Create storage account for a package with application artifacts
$storageAccount=New-AzStorageAccount `
  -ResourceGroupName $resourceGroup `
  -Name $storageName `
  -SkuName Standard_LRS `
  -Location eastus `
$ctx=$storageAccount.Context

# Create storage container and upload zip to blob
New-AzStorageContainer -Name appcontainer -Context $ctx -Permission blob
Set-AzStorageBlobContent `
  -File "path_to_your_zip_package" `
  -Container appcontainer `
  -Blob app.zip `
  -Context $ctx

# Get blob absolute uri
$blobUri=(Get-AzureStorageBlob -Container appcontainer -Blob app.zip -Context $ctx).ICloudBlob.uri.AbsoluteUri

Jalankan skrip CLI Azure di bawah ini atau ikuti langkah-langkah di portal Microsoft Azure untuk menerapkan definisi aplikasi terkelola Katalog Layanan:

Untuk menjalankan sampel ini, instal versi terbaru Azure CLI. Untuk memulai, jalankan az login guna membuat koneksi dengan Azure.

Sampel untuk Azure CLI ditulis untuk bash shell. Untuk menjalankan sampel ini di Windows PowerShell atau Perintah, Anda perlu mengubah elemen skrip.

resourceGroup="appResourcesGroup"
# Select subscription and create resource group (if you have not created yet)
az account set --subscription <subscriptionID>
az group create --name $resourceGroup --location eastus

# Get object ID of your identity
userid=$(az ad user list --upn example@contoso.org --query [0].id --output tsv)
# Get role definition ID for the Owner role
roleid=$(az role definition list --name Owner --query [].name --output tsv)

# Create managed application definition resource
az managedapp definition create \
  --name "ManagedUsersAppDefinition" \
  --location "eastus" \
  --resource-group $resourceGroup \
  --lock-level ReadOnly \
  --display-name "Managed users app definition" \
  --description "Managed application with Azure Custom Provider" \
  --authorizations "$userid:$roleid" \
  --package-file-uri "path to your app.zip package"

Instans aplikasi terkelola

Saat definisi aplikasi terkelola diterapkan, jalankan skrip di bawah ini atau ikuti langkah-langkah di portal Microsoft Azure untuk menerapkan instans aplikasi terkelola Anda dengan penyedia kustom:

appResourcesGroup="appResourcesGroup"
applicationGroup="usersApplicationGroup"

# Create resource group for managed application instance
az group create --name $applicationGroup --location eastus

# Get ID of managed application definition
appid=$(az managedapp definition show --name ManagedUsersAppDefinition --resource-group $appResourcesGroup --query id --output tsv)

# Create the managed application
az managedapp create \
  --name ManagedUsersApp \
  --location "eastus" \
  --kind "Servicecatalog" \
  --resource-group $applicationGroup \
  --managedapp-definition-id $appid \
  --managed-rg-id "managedResourcesGroup" \
  --parameters "{\"funcname\": {\"value\": \"managedusersappfunction\"}, \"storageName\": {\"value\": \"managedusersappstorage\"}}"

Gunakan tindakan dan sumber daya kustom

Setelah aplikasi katalog layanan disebarkan, Anda memiliki dua grup sumber daya baru. Grup sumber daya applicationGroup pertama berisi contoh aplikasi terkelola, grup sumber daya kedua menyimpan sumber daya untuk aplikasi managedResourceGroup terkelola, termasuk penyedia kustom.

Application resource groups

Anda dapat pergi ke instans aplikasi terkelola dan melakukan tindakan kustom di halaman "Gambaran Umum", membuat sumber daya kustom pengguna di halaman "Pengguna" dan menjalankan tindakan konteks kustom pada sumber daya kustom.

  • Buka halaman "Gambaran Umum" dan klik tombol "Tindakan Ping":

Perform custom action

  • Buka halaman "Pengguna" dan klik tombol "Tambahkan". Berikan masukan untuk membuat sumber daya dan mengirimkan formulir:

Screenshot shows the Add button selected from Users.

  • Buka halaman "Pengguna", pilih sumber daya "pengguna" dan klik "Tindakan Konteks Kustom":

Screenshot shows Custom Context Action selected.

Membersihkan sumber daya

Di langkah-langkah sebelumnya, Anda membuat sumber daya Azure dalam grup sumber daya. Jika Anda tidak berharap membutuhkan sumber daya ini di masa mendatang, Anda dapat menghapusnya dengan menghapus grup sumber daya.

Pada menu portal Microsoft Azure atau halaman Beranda, pilih Grup sumber daya. Setelah itu, pada halaman Grup sumber daya, pilih myResourceGroup.

Pada halaman myResourceGroup, pastikan sumber daya yang tercantum adalah sumber daya yang ingin Anda hapus.

Pilih Hapus grup sumber daya, ketik myResourceGroup di kotak teks untuk mengonfirmasi, lalu pilih Hapus.

Cari bantuan

Jika Anda memiliki pertanyaan tentang Azure Managed Applications, Anda dapat mencoba bertanya di Stack Overflow dengan tag azure-managed-app atau Microsoft Q &A dengan tag azure-managed-application. Pertanyaan serupa mungkin sudah dijawab, jadi periksa terlebih dulu sebelum memposting. Silakan gunakan tag masing-masing untuk respons yang lebih cepat.

Langkah berikutnya

Untuk memublikasikan aplikasi terkelola Anda ke Azure Marketplace, lihat Aplikasi terkelola Azure di Marketplace.

Pelajari selengkapnya tentang Penyedia Kustom