Nastavení názvu a typu pro podřízené prostředky

Podřízené prostředky jsou prostředky, které existují pouze v kontextu jiného prostředku. Například rozšíření virtuálního počítače nemůže existovat bez virtuálního počítače. Prostředek rozšíření je podřízeným prostředkem virtuálního počítače.

Každý nadřazený prostředek přijímá jako podřízené prostředky pouze určité typy prostředků. Typ prostředku pro podřízený prostředek zahrnuje typ prostředku pro nadřazený prostředek. Microsoft.Web/sites/config Například a Microsoft.Web/sites/extensions jsou oba podřízené prostředky nástroje Microsoft.Web/sites. Akceptované typy prostředků jsou zadané ve schématu šablony nadřazeného prostředku.

V šabloně Azure Resource Manager (šablona ARM) můžete zadat podřízený prostředek buď v rámci nadřazeného prostředku, nebo mimo nadřazený prostředek. Hodnoty, které zadáte pro název a typ prostředku, se liší v závislosti na tom, jestli je podřízený prostředek definovaný uvnitř nebo mimo nadřazený prostředek.

Tip

Doporučujeme Bicep , protože nabízí stejné funkce jako šablony ARM a syntaxe se snadněji používá. Další informace najdete v tématu podřízené prostředky.

V rámci nadřazeného prostředku

Následující příklad ukazuje podřízený prostředek zahrnutý do vlastnosti resources nadřazeného prostředku.

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

Podřízené prostředky je možné definovat pouze do pěti úrovní hloubky.

Při definování v rámci nadřazeného typu prostředku naformátujete hodnoty typu a názvu jako jeden segment bez lomítek.

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

Následující příklad ukazuje virtuální síť s podsítí. Všimněte si, že podsíť je zahrnutá v poli prostředků pro virtuální síť. Název je nastavený na Podsíť1 a typ je nastavený na podsítě. Podřízený prostředek je označen jako závislý na nadřazených prostředcích, protože před nasazením podřízeného prostředku musí nadřazený prostředek existovat.

"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"
        }
      }
    ]
  }
]

Úplný typ prostředku je stále Microsoft.Network/virtualNetworks/subnets. Nezadáte, Microsoft.Network/virtualNetworks/ protože se předpokládá z nadřazeného typu prostředku.

Název podřízeného prostředku je nastavený na Podsíť1 , ale úplný název obsahuje název nadřazeného prostředku. Nezadáte virtuální síť 1 , protože se předpokládá z nadřazeného prostředku.

Mimo nadřazený prostředek

Následující příklad ukazuje podřízený prostředek mimo nadřazený prostředek. Tento přístup můžete použít, pokud nadřazený prostředek není nasazený ve stejné šabloně nebo pokud chcete použít kopii k vytvoření více než jednoho podřízeného prostředku.

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

Při definování mimo nadřazený prostředek naformátujete hodnoty typu a názvu lomítky tak, aby zahrnovaly nadřazený typ a název.

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

Následující příklad ukazuje virtuální síť a podsíť, které jsou definované na kořenové úrovni. Všimněte si, že podsíť není součástí pole prostředků virtuální sítě. Název je nastavený na VNet1/Subnet1 a typ je nastavený na Microsoft.Network/virtualNetworks/subnets. Podřízený prostředek je označen jako závislý na nadřazených prostředcích, protože před nasazením podřízeného prostředku musí nadřazený prostředek existovat.

"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"
    }
  }
]

Další kroky