Atur nama dan jenis untuk sumber daya anak

Sumber daya anak adalah sumber daya yang hanya ada dalam konteks sumber daya lain. Misalnya, ekstensi komputer virtual tidak dapat ada tanpa komputer virtual. Sumber daya ekstensi adalah anak dari komputer virtual.

Setiap sumber daya induk hanya menerima jenis sumber daya tertentu sebagai sumber daya anak. Jenis sumber daya untuk sumber daya anak mencakup jenis sumber daya untuk sumber daya induk. Misalnya, Microsoft.Web/sites/config dan Microsoft.Web/sites/extensions keduanya merupakan sumber daya anak dari Microsoft.Web/sites. Jenis sumber daya yang diterima ditentukan dalam skema templat sumber daya induk.

Dalam templat Azure Resource Manager (templat ARM), Anda dapat menentukan sumber daya anak baik di dalam sumber daya induk atau di luar sumber daya induk. Nilai yang Anda berikan untuk nama sumber daya dan jenis sumber daya bervariasi berdasarkan apakah sumber daya anak ditentukan berada di dalam atau di luar sumber daya induk.

Tip

Kami merekomendasikan Bicep karena menawarkan kemampuan yang sama dengan templat ARM dan sintaksnya lebih mudah digunakan. Untuk mempelajari lebih lanjut, lihat sumber daya turunan.

Dalam sumber daya induk

Contoh berikut memperlihatkan sumber daya anak yang disertakan dalam properti sumber daya induk.

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

Sumber daya anak hanya dapat ditentukan dengan kedalaman lima tingkat.

Saat ditentukan dalam jenis sumber daya induk, Anda memformat nilai jenis dan nama sebagai segmen tunggal tanpa garis miring.

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

Contoh berikut memperlihatkan jaringan virtual dan dengan subnet. Perhatikan bahwa subnet disertakan dalam array sumber daya untuk jaringan virtual. Nama diatur ke Subnet1 dan jenis diatur ke subnet. Sumber daya anak ditandai sebagai dependen pada sumber daya induk karena sumber daya induk harus ada sebelum sumber daya anak dapat disebarkan.

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

Jenis sumber daya penuh masih Microsoft.Network/virtualNetworks/subnets. Anda tidak menyediakan Microsoft.Network/virtualNetworks/ karena jenis ini diasumsikan dari jenis sumber daya induk.

Nama sumber daya anak diatur ke Subnet1 tetapi nama lengkapnya menyertakan nama induk. Anda tidak menyediakan VNet1 karena jenis ini diasumsikan dari sumber daya induk.

Di luar sumber daya induk

Contoh berikut memperlihatkan sumber daya anak di luar sumber daya induk. Anda mungkin menggunakan pendekatan ini jika sumber daya induk tidak disebarkan dalam templat yang sama, atau jika ingin menggunakan salinan untuk membuat lebih dari satu sumber daya anak.

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

Saat ditentukan di luar sumber daya induk, Anda memformat jenis dan nilai nama dengan garis miring untuk menyertakan jenis dan nama induk.

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

Contoh berikut memperlihatkan jaringan virtual dan subnet yang keduanya ditentukan pada tingkat root. Perhatikan bahwa subnet tidak disertakan dalam array sumber daya untuk jaringan virtual. Nama diatur ke VNet1/Subnet1 dan jenis diatur ke Microsoft.Network/virtualNetworks/subnets. Sumber daya anak ditandai sebagai dependen pada sumber daya induk karena sumber daya induk harus ada sebelum sumber daya anak dapat disebarkan.

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

Langkah berikutnya