適用於 Azure 受控應用程式建立體驗的 CreateUiDefinition.json

此文件介紹 createUiDefinition.json 檔案的核心概念。 Azure 入口網站會使用這個檔案,在建立受控應用程式時定義使用者介面。

Note

想要 Form 視圖嗎?表單檢視 是一種較新的 JSON 製作模型,主要用於 模板規範入口網站表單。 它使用 https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json schema,並以 view 包裝器取代 handlerversionparameters。 這兩種格式共享許多元素結構與表達式函式,但其支援的元素清單、頂層形狀與部署綁定有所不同。 請參閱 表單檢視總覽

範本如下所示

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "config": {
      "isWizard": false,
      "basics": {}
    },
    "basics": [],
    "steps": [],
    "outputs": {},
    "resourceTypes": []
  }
}

createUiDefinition.json 一律會包含三個屬性:

  • 控制碼
  • 版本
  • 參數

處理常式應一律為 Microsoft.Azure.CreateUIDef,而最新的支援版本為 0.1.2-preview

parameters 屬性的結構描述取決於指定的處理常式和版本之組合。 針對受控應用程式,支援的屬性為 configbasicsstepsoutputs。 只有在您需要覆寫basics步驟的預設行為時,才會使用config 。 basics 與 steps 屬性包含會顯示在 Azure 入口網站中的元素,例如文字方塊和下拉式選單。 outputs 屬性可用來將指定元素的輸出值對應至 Azure Resource Manager 範本的參數。

建議包含 $schema,但是為選用。 如果指定,version 的值必須符合 $schema URI 內的版本。

您可以使用 JSON 編輯器來建立 createUiDefinition,然後在 createUiDefinition 沙箱中加以測試和預覽。 如需沙箱的詳細資訊,請參閱測試 Azure 受控應用程式的入口網站介面

設定

config 是選用屬性。 您可以用它來覆寫基本步驟的預設行為,或將您的介面設為逐步引導精靈。 如果使用 config,則其為 createUiDefinition.json 檔案內 parameters 區段中的第一個屬性。 下列範例顯示可用的屬性。

"config": {
  "isWizard": false,
  "basics": {
    "description": "Customized description with **markdown**, see [more](https://www.microsoft.com).",
    "subscription": {
      "constraints": {
        "validations": [
          {
            "isValid": "[not(contains(subscription().displayName, 'Test'))]",
            "message": "Can't use test subscription."
          },
          {
            "permission": "Microsoft.Compute/virtualmachines/write",
            "message": "Must have write permission for the virtual machine."
          },
          {
            "permission": "Microsoft.Compute/virtualMachines/extensions/write",
            "message": "Must have write permission for the extension."
          }
        ]
      },
      "resourceProviders": [
        "Microsoft.Compute"
      ]
    },
    "resourceGroup": {
      "constraints": {
        "validations": [
          {
            "isValid": "[not(contains(resourceGroup().name, 'test'))]",
            "message": "Resource group name can't contain 'test'."
          }
        ]
      },
      "allowExisting": true
    },
    "location": {
      "label": "Custom label for location",
      "toolTip": "provide a useful tooltip",
      "resourceTypes": [
        "Microsoft.Compute/virtualMachines"
      ],
      "allowedValues": [
        "eastus",
        "westus2"
      ],
      "visible": true
    }
  }
},

針對 isValid 屬性,撰寫可解析為 true 或 false 的運算式。 針對 permission 屬性,請指定其中一項資源提供者動作

精靈

isWizard 屬性可讓您在繼續進行下一個步驟之前,要求每個步驟的驗證成功。 未指定 isWizard 屬性時,預設值為 false,且不需要逐步驗證。

isWizard 啟用並設定為 true 時,[基本] 索引標籤可供使用,且會停用所有其他索引標籤。 選取 [下一步] 按鈕時,索引標籤的圖示會指出索引標籤的驗證通過或失敗。 在索引標籤的必要欄位完成並通過驗證後,按 [下一步] 按鈕可瀏覽至下一個索引標籤。所有索引標籤都通過驗證時,您可以移至 [檢閱和建立] 頁面,然後選取 [建立] 按鈕以開始部署。

分頁精靈

覆寫基本概念

基本設定可讓您自訂基本步驟。

針對 description,提供已啟用 Markdown 的字串來描述您的資源。 支援多行格式和連結。

subscriptionresourceGroup 元素可讓您指定更多驗證。 指定驗證的語法與文字方塊的自訂驗證完全相同。 您也可以在訂用帳戶或資源群組上指定 permission 驗證。

訂用帳戶控制項會接受資源提供者命名空間的清單。 例如,您可以指定 Microsoft.Compute。 當使用者選取不支援資源提供者的訂用帳戶時,便會顯示錯誤訊息。 當資源提供者未在該訂用帳戶上註冊,且使用者沒有註冊資源提供者的權限時,便會發生此錯誤。

資源群組控制項具有 allowExisting 的選項。 若為 true,使用者可以選取已有資源的資源群組。 此旗標最適用於解決方案範本,其預設行為會強制使用者必須選取新的或空白的資源群組。 在多數其他情況下,不需要指定此屬性。

對於 location,指定您想要覆寫的位置控制項的屬性。 任何未覆寫的屬性都會設為預設值。 resourceTypes 會接受包含完整資源類型名稱的字串陣列。 位置選項僅限於支援資源類型的區域。  allowedValues 接受區域字串陣列。 只有那些區域會顯示在下拉式清單中。 您可以同時設定 allowedValuesresourceTypes。 結果會是這兩個清單的交集。 最後,visible 屬性可用來視情況或完全停用位置下拉選單。 

基本概念

基本步驟是在 Azure 入口網站解析檔案時所產生的第一個步驟。 依預設,[基本] 步驟可讓使用者選擇要部署的訂用帳戶、資源群組和位置。

基本預設值

您可以在此區段中新增更多元素。 可能的話,新增查詢整個部署參數的元素 (例如叢集的名稱或管理員認證)。

下列範例顯示已新增至預設元素的文字方塊。

"basics": [
  {
    "name": "textBox1",
    "type": "Microsoft.Common.TextBox",
    "label": "Textbox on basics",
    "defaultValue": "my text value",
    "toolTip": "",
    "visible": true
  }
]

步驟

steps 屬性包含零或多個要在基本資料之後顯示的步驟。 每個步驟都包含一或多個元素。 請考慮針對每個角色或要進行部署的應用程式層新增步驟。 例如,新增一個適用於主要節點輸入的步驟,以及一個適用於叢集中的工作節點的步驟。

"steps": [
  {
    "name": "demoConfig",
    "label": "Configuration settings",
    "elements": [
       ui-elements-needed-to-create-the-instance
    ]
  }
]

輸出

Azure 入口網站會使用 outputs 屬性,將 basicssteps 的屬性對應至 Azure Resource Manager 部署範本的參數。 這個字典的金鑰是範本參數的名稱,而值則是所參照元素的輸出物件之屬性。

若要設定受控應用程式資源名稱,您必須在輸出屬性中包含名為 applicationResourceName 的值。 如果您未設定此值,則應用程式會針對名稱指派 GUID。 您可以在使用者介面中包含文字方塊,向使用者要求名稱。

"outputs": {
  "vmName": "[steps('appSettings').vmName]",
  "trialOrProduction": "[steps('appSettings').trialOrProd]",
  "userName": "[steps('vmCredentials').adminUsername]",
  "pwd": "[steps('vmCredentials').vmPwd.password]",
  "applicationResourceName": "[steps('appSettings').vmName]"
}

資源類型

若要將可用的位置篩選為僅支援要部署資源類型的位置,請提供資源類型的陣列。 如果您提供一個以上的資源類型,則只會傳回支援所有資源類型的位置。 這個屬性為選擇性。

{
  "$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
  "handler": "Microsoft.Azure.CreateUIDef",
  "version": "0.1.2-preview",
  "parameters": {
    "resourceTypes": [
      "Microsoft.Compute/disks"
    ],
    "basics": [
        ...

Functions

CreateUiDefinition 提供函式,用來處理元素的輸入與輸出,以及條件式等功能。 這些函式在語法和功能上與 Azure Resource Manager 範本函式類似。

下一步

createUiDefinition.json 檔案本身有簡單的結構描述。 它的實際深度來自於所有支援的元素和函式。 這些項目會在以下位置更詳細地描述:

下列位置會提供 createUiDefinition 的目前 JSON 結構描述:https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json

如需使用者介面檔案範例,請參閱 createUiDefinition.json