Impostare il nome e il tipo di una risorsa figlio in un modello di Resource ManagerSet name and type for child resource in Resource Manager template

Quando si crea un modello, è spesso necessario includere una risorsa figlio correlata a una risorsa padre.When creating a template, you frequently need to include a child resource that is related to a parent resource. Il modello, ad esempio, potrebbe includere un'istanza di SQL Server e un database.For example, your template may include a SQL server and a database. L'istanza di SQL Server è la risorsa padre e il database è la risorsa figlio.The SQL server is the parent resource, and the database is the child resource.

Il formato del tipo della risorsa figlio è: {resource-provider-namespace}/{parent-resource-type}/{child-resource-type}The format of the child resource type is: {resource-provider-namespace}/{parent-resource-type}/{child-resource-type}

Il formato del nome della risorsa figlio è: {parent-resource-name}/{child-resource-name}The format of the child resource name is: {parent-resource-name}/{child-resource-name}

Il tipo e il nome vengono tuttavia specificati in modo diverso in un modello a seconda che la risorsa sia annidata nella risorsa padre oppure di primo livello.However, you specify the type and name in a template differently based on whether it is nested within the parent resource, or on its own at the top level. Questo argomento illustra come gestire entrambi gli approcci.This topic shows how to handle both approaches.

Quando si crea un riferimento completo a una risorsa, l'ordine di combinazione dei segmenti dal tipo e dal nome non è semplicemente una concatenazione dei due elementi.When constructing a fully qualified reference to a resource, the order to combine segments from the type and name is not simply a concatenation of the two. Dopo lo spazio dei nomi, usare invece una sequenza di coppie tipo/nome dal meno specifico al più specifico:Instead, after the namespace, use a sequence of type/name pairs from least specific to most specific:

{resource-provider-namespace}/{parent-resource-type}/{parent-resource-name}[/{child-resource-type}/{child-resource-name}]*

ad esempio:For example:

Microsoft.Compute/virtualMachines/myVM/extensions/myExt è corretto Microsoft.Compute/virtualMachines/extensions/myVM/myExt non è correttoMicrosoft.Compute/virtualMachines/myVM/extensions/myExt is correct Microsoft.Compute/virtualMachines/extensions/myVM/myExt is not correct

Risorsa figlio annidataNested child resource

Il modo più semplice per definire una risorsa figlio consiste nell'annidarla nella risorsa padre.The easiest way to define a child resource is to nest it within the parent resource. L'esempio seguente illustra un database SQL annidato in un'istanza di SQL Server.The following example shows a SQL database nested within in a SQL Server.

{
  "name": "exampleserver",
  "type": "Microsoft.Sql/servers",
  "apiVersion": "2014-04-01",
  ...
  "resources": [
    {
      "name": "exampledatabase",
      "type": "databases",
      "apiVersion": "2014-04-01",
      ...
    }
  ]
}

Per la risorsa figlio, il tipo è impostato su databases, ma il tipo di risorsa completo è Microsoft.Sql/servers/databases.For the child resource, the type is set to databases but its full resource type is Microsoft.Sql/servers/databases. Non si specifica Microsoft.Sql/servers/ perché viene ottenuto dal tipo della risorsa padre.You do not provide Microsoft.Sql/servers/ because it is assumed from the parent resource type. Il nome della risorsa figlio è impostato su exampledatabase, ma il nome completo include il nome della risorsa padre.The child resource name is set to exampledatabase but the full name includes the parent name. Non si specifica exampleserver perché viene ottenuto dalla risorsa padre.You do not provide exampleserver because it is assumed from the parent resource.

Risorsa figlio di primo livelloTop-level child resource

È possibile definire la risorsa figlio al primo livello.You can define the child resource at the top level. Questo approccio potrebbe essere usato se la risorsa padre non viene distribuita nello stesso modello o se si vuole usare copy per creare più risorse figlio.You might use this approach if the parent resource is not deployed in the same template, or if want to use copy to create multiple child resources. Con questo approccio, è necessario specificare il tipo di risorsa completo e includere il nome della risorsa padre nel nome della risorsa figlio.With this approach, you must provide the full resource type, and include the parent resource name in the child resource name.

{
  "name": "exampleserver",
  "type": "Microsoft.Sql/servers",
  "apiVersion": "2014-04-01",
  "resources": [ 
  ],
  ...
},
{
  "name": "exampleserver/exampledatabase",
  "type": "Microsoft.Sql/servers/databases",
  "apiVersion": "2014-04-01",
  ...
}

Il database è una risorsa figlio del server anche se sono definiti allo stesso livello nel modello.The database is a child resource to the server even though they are defined on the same level in the template.

Passaggi successiviNext steps