Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive l'errore ParentResourceNotFound
che potrebbe verificarsi durante la distribuzione di una risorsa dipendente da una risorsa padre. L'errore si verifica quando si distribuiscono risorse con un file Bicep o un modello di Azure Resource Manager (modello arm).
Sintomo
Quando si distribuisce una risorsa subordinata in un'altra risorsa, è possibile che venga visualizzato il seguente errore:
Code=ParentResourceNotFound,
Message=Can not perform requested operation on nested resource. Parent resource 'exampleserver' not found."
Motivo
Quando una risorsa è figlio di un'altra risorsa, la risorsa padre deve esistere prima della creazione della risorsa figlio. Il nome della risorsa figlio definisce la connessione con la risorsa padre. Il nome della risorsa figlio è nel formato <parent-resource-name>/<child-resource-name>
. Ad esempio, un database SQL può essere definito come:
resource sqlDatabase 'Microsoft.Sql/servers/databases@2022-02-01-preview' = {
name: '${sqlServerName}/${databaseName}'
...
}
Per ulteriori informazioni sulle risorse padre e figlio di Bicep, vedere Impostare il nome e il tipo per le risorse figlio di Bicep.
Se si distribuiscono il server e il database nello stesso modello, ma non si specifica una dipendenza dal server, la distribuzione del database potrebbe essere avviata prima della distribuzione del server. Ciò causa il fallimento della distribuzione del database con l'errore ParentResourceNotFound
.
Se la risorsa padre esiste già e non è distribuita nello stesso modello, viene visualizzato l'errore ParentResourceNotFound
quando Resource Manager non può associare la risorsa figlio a un elemento padre. Questo errore può verificarsi quando la risorsa figlia non è nel formato corretto. In alternativa, se la risorsa figlio viene distribuita in un gruppo di risorse diverso dal gruppo di risorse per la risorsa padre.
Soluzione 1: Distribuita nello stesso modello
Per risolvere questo errore quando le risorse padre e figlio vengono distribuite nello stesso modello, usare una dipendenza.
Questo esempio usa una risorsa figlio annidata all'interno della risorsa padre e che crea la dipendenza. La risorsa figlia ottiene il tipo di risorsa e la versione dell'API dalla risorsa padre.
resource sqlServer 'Microsoft.Sql/servers@2022-02-01-preview' = {
name: sqlServerName
properties: {
...
}
resource sqlDatabase 'databases' = {
name: databaseName
...
}
}
Per altre informazioni sulle dipendenze, vedere Dichiarazione di risorsa in Bicep.
Soluzione 2: Distribuita in modelli diversi
Per risolvere questo errore quando la risorsa principale è stata distribuita in un modello di template diverso, non impostare una dipendenza. Distribuire al contrario la risorsa figlia nello stesso gruppo di risorse e specificare il nome della risorsa padre.
In questo esempio viene usata la parola chiave esistente per fare riferimento a un elemento padre distribuito in un file separato. La risorsa figlio utilizza l'elemento parent
e il nome simbolico della risorsa padre.
param location string = resourceGroup().location
param sqlServerName string
param databaseName string
resource sqlServer 'Microsoft.Sql/servers@2022-02-01-preview' existing = {
name: sqlServerName
}
resource sqlDatabase 'Microsoft.Sql/servers/databases@2022-02-01-preview' = {
parent: sqlServer
name: databaseName
location: location
}