次の方法で共有


子リソースの名前と種類を設定する

子リソースとは、別のリソースのコンテキスト内でのみ存在するリソースのことです。 たとえば、 仮想マシン拡張機能 は、 仮想マシンなしでは存在できません。 拡張機能リソースは、仮想マシンの子です。

各親リソースは、特定のリソースの種類のみを子リソースとして受け入れます。 子リソースのリソースの種類には、親リソースのリソースの種類が含まれます。 たとえば、 Microsoft.Web/sites/configMicrosoft.Web/sites/extensions はどちらも Microsoft.Web/sitesの子リソースです。 受け入れられるリソースの種類は、親リソースの テンプレート スキーマ で指定されます。

Azure Resource Manager テンプレート (ARM テンプレート) では、親リソース内または親リソースの外部で子リソースを指定できます。 リソース名とリソースの種類に指定する値は、子リソースが親リソースの内部または外部で定義されているかどうかによって異なります。

ヒント

ARM テンプレートと同じ機能を備え、構文も使いやすいため、Bicep をお勧めします。 詳細については、 子リソースを参照してください。

親リソース内

次の例は、親リソースの resources プロパティに含まれる子リソースを示しています。

"resources": [
  {
    <parent-resource>
    "resources": [
      <child-resource>
    ]
  }
]

子リソースは、5 レベルの深さでのみ定義できます。

親リソースの種類内で定義されている場合は、型と名前の値をスラッシュなしで 1 つのセグメントとして書式設定します。

"type": "{child-resource-type}",
"name": "{child-resource-name}",

次の例は、仮想ネットワークとサブネットを示しています。 サブネットが仮想ネットワークのリソース配列内に含まれていることに注意してください。 名前は Subnet1 に設定され、種類はサブネットに設定 されます。 子リソースは、子リソースをデプロイする前に親リソースが存在する必要があるため、親リソースに依存するようにマークされます。

"resources": [
  {
    "type": "Microsoft.Network/virtualNetworks",
    "apiVersion": "2025-01-01",
    "name": "VNet1",
    "location": "[parameters('location')]",
    "properties": {
      "addressSpace": {
        "addressPrefixes": [
          "10.0.0.0/16"
        ]
      }
    },
    "resources": [
      {
        "type": "subnets",
        "apiVersion": "2024-07-01",
        "name": "Subnet1",
        "dependsOn": [
          "VNet1"
        ],
        "properties": {
          "addressPrefix": "10.0.0.0/24"
        }
      }
    ]
  }
]

完全なリソースの種類はまだ Microsoft.Network/virtualNetworks/subnetsMicrosoft.Network/virtualNetworks/は親リソースの種類から想定されているため、指定しません。

子リソース名は Subnet1 に設定されていますが、完全な名前には親名が含まれます。 VNet1 は親リソースから想定されているため、提供しません。

親リソースの範囲外

次の例は、親リソースの外部にある子リソースを示しています。 この方法は、親リソースが同じテンプレートにデプロイされていない場合、または コピー を使用して複数の子リソースを作成する場合に使用できます。

"resources": [
  {
    <parent-resource>
  },
  {
    <child-resource>
  }
]

親リソースの外部で定義されている場合は、型と名前の値をスラッシュで書式設定し、親の型と名前を含めます。

"type": "{resource-provider-namespace}/{parent-resource-type}/{child-resource-type}",
"name": "{parent-resource-name}/{child-resource-name}",

次の例は、ルート レベルで定義されている仮想ネットワークとサブネットを示しています。 サブネットが仮想ネットワークのリソース配列に含まれていないことに注意してください。 名前は VNet1/Subnet1 に設定され、型は Microsoft.Network/virtualNetworks/subnets に設定されます。 子リソースは、子リソースをデプロイする前に親リソースが存在する必要があるため、親リソースに依存するようにマークされます。

"resources": [
  {
    "type": "Microsoft.Network/virtualNetworks",
    "apiVersion": "2025-01-01",
    "name": "VNet1",
    "location": "[parameters('location')]",
    "properties": {
      "addressSpace": {
        "addressPrefixes": [
          "10.0.0.0/16"
        ]
      }
    }
  },
  {
    "type": "Microsoft.Network/virtualNetworks/subnets",
    "apiVersion": "2025-01-01",
    "name": "VNet1/Subnet1",
    "dependsOn": [
      "VNet1"
    ],
    "properties": {
      "addressPrefix": "10.0.0.0/24"
    }
  }
]

次のステップ

  • ARM テンプレートの作成の詳細については、「ARM テンプレート の構造と構文を理解する」を参照してください。
  • リソースを参照するときのリソース名の形式については、 参照関数を参照してください。