フォーム ビューの概要 (uiFormDefinition)

フォーム ビューは、Azure ポータルの作成エクスペリエンスの JSON の説明です。 Azure ポータルでは、実行時に JSON からフォームがレンダリングされます。書き込むクライアント コードはありません。 フォーム ビューは uiFormDefinition.json 形式を使用し、 テンプレート スペック ポータル フォームで使用されます。 Azure Managed Applications別の createUiDefinition.json 形式を使用します。

最小ファイルは次のようになります。

{
  "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
  "view": {
    "kind": "Form",
    "properties": {
      "title": "Create my resource",
      "steps": []
    },
    "outputs": {
      "kind": "ResourceGroup",
      "resourceGroupId": "",
      "location": "",
      "parameters": {}
    }
  }
}

フォーム ビューには常に次の情報があります。

フィールド 必須 説明
$schema 推奨 IntelliSense の 2021-09-09/uiFormDefinition.schema.json スキーマをピン留めします。
view.kind はい "Form"である必要があります。
view.properties.title はい フォームの上に表示されるページ タイトル。
view.properties.steps はい 1 つ以上のステップ (タブ)。 「 手順」を参照してください。
view.outputs はい (デプロイ時) デプロイ コンテキスト : デプロイターゲットのサブスクリプション、リソース グループ、管理グループ、テナント、およびAzure Resource Manager テンプレート パラメーター値。 「出力」を参照してください。

手順

steps は順序付けられた配列です。 各ステップはタブとしてレンダリングされます。ユーザーは 、[次へ] と [ 前へ] のステップ間を移動します。

"steps": [
  {
    "name": "basics",
    "label": "Basics",
    "description": "Provide the basic settings for the resource.",
    "elements": [
      {
        "name": "name",
        "type": "Microsoft.Common.TextBox",
        "label": "Resource name",
        "toolTip": "Provide a unique name.",
        "constraints": {
          "required": true,
          "regex": "^[a-z0-9]{3,24}$",
          "validationMessage": "3-24 lowercase letters or digits."
        }
      }
    ]
  }
]

各手順には次の内容があります。

フィールド 必須 説明
name はい ステップ ID。 式内で steps('<name>') として参照します。
label はい タブ タイトル。
description いいえ タブ タイトルの下に表示される説明 (省略可能)。
elements はい フォーム コントロールの配列。 「フォーム ビューの要素」を参照してください。

ステップをオーバーロードするのではなく、関連するフィールドを Microsoft.Common.Section でグループ化します。 セクションは入れ子にできません。

出力 (デプロイ コンテキスト)

フォーム ビューを使用してAzure Resource Manager テンプレート (一般的なケース) を展開する場合、view.outputs配置コンテキストです。 ポータルはこれを使用して、デプロイする場所と、テンプレートに渡すパラメーター値を把握します。 4 つの kind 値がサポートされています。

kind 必須フィールド 次の場合に使用されます。
ResourceGroup resourceGroupIdlocationparameters ほとんどのリソース。 リソース グループにデプロイします。
Subscription subscriptionIdlocationparameters テンプレートの $schemasubscriptionDeploymentTemplate.json
ManagementGroup managementGroupIdlocationparameters テンプレートの $schemamanagementGroupDeploymentTemplate.json
Tenant locationparameters テンプレートの $schematenantDeploymentTemplate.json

parameters キーは、1:1 を ARM テンプレート パラメーターにマップします。 通常、値はステップ出力を読み取る式です。

リソース グループデプロイの場合、パブリック スキーマは Microsoft.Common.ResourceScopeをサポートし、 テンプレート スペック用のポータル フォームの作成 チュートリアルでは、一般的なサブスクリプション、リソース グループ、および場所の選択フローに使用します。 次の例では、basics ステップに Microsoft.Common.ResourceScope という名前のresourceScope要素が含まれていることを前提としています。 これは、フォームにデプロイ スコープからサブスクリプションと場所を推測するコントロール ( Microsoft.Compute.SizeSelector など) が含まれている場合にも、最も安全な既定値です。

"outputs": {
  "kind": "ResourceGroup",
  "resourceGroupId": "[steps('basics').resourceScope.resourceGroup.id]",
  "location":        "[steps('basics').resourceScope.location.name]",
  "parameters": {
    "keyVaultName": "[steps('basics').name]",
    "location":     "[steps('basics').resourceScope.location.name]",
    "sku":          "[steps('keyvault').sku]"
  }
}

フォームで、Microsoft.Common.SubscriptionSelector の代わりにスタンドアロンの Microsoft.Common.ResourceGroupSelectorMicrosoft.Common.LocationSelector、および Microsoft.Common.ResourceScope 要素を使用する場合は、スコープ対応コントロールが scope プロパティを介して、選択したサブスクリプションと場所に明示的にバインドされるようにしてください。

Expressions

フォーム "[ ... ]" の文字列は式として評価されます。 関数は、 CreateUiDefinition 関数に関して説明されているのと同じセットです。

Function 返品
steps('<stepName>') 名前付きステップのすべてのコントロール出力を保持するオブジェクト。
basics('<elementName>') 従来の 基本 ステップの要素の出力 (CreateUiDefinition のみ)。
equalsnotandorifcoalesceempty 論理ヘルパー。
concatsplitsubstringindexOftoLowertoUpperlastfirst 文字列ヘルパーと配列ヘルパー。
lengthminmaxaddsubmuldiv 数値ヘルパー。
subscription()resourceGroup()location() 選択したスコープ。

コントロール内では、 visibledefaultValue、およびほとんどの constraints.* フィールドは、リテラルまたは式を受け入れます。

ローカリゼーション

ユーザー向けの文字列は、(上の例のように) リテラルとしてインライン化できます。

オーサリングツール

  • フォーム ビュー サンドボックスでは、ARM テンプレートから既定のフォームを生成し、結果をプレビューできます。 エンド ツー エンドのチュートリアルについては、 テンプレート スペックのポータル フォームの作成 を参照してください。

  • スキーマは、 https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.jsonで発行されます。 Visual Studio Codeで IntelliSense を有効にするには、フォーム ファイルの最上位$schema値としてスキーマ URL を追加します。

    {
      "$schema": "https://schema.management.azure.com/schemas/2021-09-09/uiFormDefinition.schema.json#",
      "view": {
        "kind": "Form"
      }
    }
    

    Visual Studio Code でスキーマ ドメインを信頼するよう求められた場合は、Configure Trusted Domains を選択し、https://schema.management.azure.com を追加します。 後でコマンド パレットから「 環境設定: 信頼されたドメインを設定する」を使用して追加することもできます。

次のステップ