Azure Resource Manager テンプレートの構造とスキーマを調べる

完了

Azure Resource Manager テンプレートには、1 つ以上の Azure リソースについての JSON 形式による定義、および構成のカスタマイズを容易にするパラメーターと変数が含まれています。

最も単純な構造のテンプレートは、次の要素で構成されます。

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "",
  "apiProfile": "",
  "parameters": {  },
  "variables": {  },
  "functions": [  ],
  "resources": [  ],
  "outputs": {  }
}
要素名 必須 説明
$schema はい テンプレート言語のバージョンが記述されている JSON (JavaScript Object Notation) スキーマ ファイルの場所。 使用するバージョン番号は、デプロイのスコープと JSON エディターによって異なります。

Visual Studio Code を Azure Resource Manager ツール拡張機能と共に使用している場合は、リソース グループのデプロイの最新バージョンを使用します。
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

他のエディター (Visual Studio を含む) では、このスキーマを処理できない場合があります。 そうしたエディターの場合、次を使用します。
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

サブスクリプション デプロイの場合、次を使用します。
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

管理グループのデプロイの場合、次を使用します。
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

テナントのデプロイの場合、次を使用します。
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#
contentVersion はい テンプレートのバージョン (1.0.0.0 など)。 この要素には任意の値を指定できます。 この値を使用して、テンプレートの重要な変更を文書化します。 テンプレートを使用してリソースをデプロイする場合は、この値を使用して、適切なテンプレートが使用されていることを確認できます。
apiProfile いいえ リソースの種類に対する API のバージョンのコレクションとして機能する API バージョン。 この値を使用すると、テンプレートのリソースごとに API バージョンを指定しなくて済みます。 API プロファイルのバージョンを指定し、リソースの種類の API バージョンを指定しないと、Resource Manager では、プロファイルでそのリソースの種類に対して定義されている API バージョンが使用されます。

API プロファイル プロパティは、Azure Stack やグローバルな Azure など、さまざまな環境にテンプレートをデプロイする場合に特に便利です。 API プロファイルのバージョンを使用し、両方の環境でサポートされているバージョンがテンプレートで自動的に使用されるようにします。 現在の API プロファイルのバージョンおよびリソース プロファイルで定義されている API バージョンの一覧については、「API Profile (API プロファイル)」をご覧ください。

詳しくは、「API プロファイルを使用してバージョンを追跡する」をご覧ください。
parameters いいえ リソースのデプロイをカスタマイズするのにはデプロイを実行すると、提供されている値です。
variables いいえ テンプレート言語式を簡略化するためにテンプレート内で JSON フラグメントとして使用される値。
functions いいえ テンプレート内で使用できるユーザー定義関数。
resources はい リソース グループまたはサブスクリプション内でデプロイまたは更新されるリソースの種類。
outputs いいえ デプロイ後に返される値。

オプションのデモ