你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
子资源是只存在于另一资源的上下文内的资源。 例如,一个虚拟机扩展不能没有虚拟机而存在。 扩展资源是虚拟机的子级。
每个父资源仅接受某些资源类型作为子资源。 子资源的资源类型包括父资源的资源类型。 例如,Microsoft.Web/sites/config 和 Microsoft.Web/sites/extensions 都是 Microsoft.Web/sites 的子资源。 接受的资源类型在父资源的 模板架构 中指定。
在 Azure 资源管理器模板(ARM 模板)中,可以在父资源内或父资源外部指定子资源。 您为资源的名称和类型提供的值,会因为子资源是在父资源内部还是外部定义而有所不同。
在父资源中
以下示例展示了在父资源的资源属性中包含的子资源。
"resources": [
{
<parent-resource>
"resources": [
<child-resource>
]
}
]
子资源总共只能定义五级。
在父资源类型中定义时,可以将类型和名称值的格式设置为单个段,而不使用斜杠。
"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/subnets。 可不提供 Microsoft.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 模板的结构和语法。
- 若要了解引用资源时资源名称的格式,请参阅 引用函数。