Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird der Fehler ParentResourceNotFound beschrieben, den Sie möglicherweise erhalten, wenn Sie eine Ressource bereitstellen, die von einer übergeordneten Ressource abhängig ist. Der Fehler tritt auf, wenn Sie Ressourcen mit einer Bicep-Datei oder azure Resource Manager-Vorlage (ARM-Vorlage) bereitstellen.
Symptom
Wenn Sie eine Ressource bereitstellen, die einer anderen Ressource untergeordnet ist, kann der folgende Fehler auftreten:
Code=ParentResourceNotFound,
Message=Can not perform requested operation on nested resource. Parent resource 'exampleserver' not found."
Ursache
Wenn eine Ressource einer anderen untergeordnet ist, muss die übergeordnete Ressource vor dem Erstellen der untergeordneten Ressource bereits vorhanden sein. Der Name der untergeordneten Ressource definiert die Verbindung mit der übergeordneten Ressource. Der Name der untergeordneten Ressource weist das Format <parent-resource-name>/<child-resource-name> auf. Beispielsweise kann eine SQL-Datenbank wie folgt definiert werden:
resource sqlDatabase 'Microsoft.Sql/servers/databases@2022-02-01-preview' = {
name: '${sqlServerName}/${databaseName}'
...
}
Weitere Informationen zu über- und untergeordneten Bicep-Ressourcen finden Sie unter Festlegen von Name und Typ für untergeordnete Ressourcen in Bicep.
Wenn Sie den Server und die Datenbank in derselben Vorlage bereitstellen, aber keine Abhängigkeit vom Server angeben, kann die Datenbankbereitstellung gestartet werden, bevor der Server bereitgestellt wurde. Dies führt dazu, dass die Datenbankbereitstellung mit dem ParentResourceNotFound Fehler fehlschlägt.
Falls die übergeordnete Ressource bereits vorhanden ist und nicht in der gleichen Vorlage bereitgestellt wird, erhalten Sie den Fehler ParentResourceNotFound, wenn Resource Manager die untergeordnete Ressource nicht mit der übergeordneten Ressource verknüpfen kann. Dieser Fehler kann auftreten, wenn sich die Kinderressource nicht im richtigen Format befindet. Oder wenn die untergeordnete Ressource in einer Ressourcengruppe bereitgestellt wird, die sich von der Ressourcengruppe der übergeordneten Ressource unterscheidet.
Lösung 1: In derselben Vorlage bereitgestellt
Nehmen Sie eine Abhängigkeit auf, um diesen Fehler zu beheben, wenn die übergeordnete und untergeordnete Ressource in der gleichen Vorlage bereitgestellt werden.
In diesem Beispiel wird eine geschachtelte untergeordnete Ressource innerhalb der übergeordneten Ressource verwendet, die die Abhängigkeit erstellt. Das untergeordnete Element ruft Ressourcentyp und API-Version der übergeordneten Ressource ab.
resource sqlServer 'Microsoft.Sql/servers@2022-02-01-preview' = {
name: sqlServerName
properties: {
...
}
resource sqlDatabase 'databases' = {
name: databaseName
...
}
}
Weitere Informationen zu Abhängigkeiten finden Sie unter Ressourcendeklaration in Bicep.
Lösung 2: In verschiedenen Vorlagen bereitgestellt
Um diesen Fehler zu beheben, wenn die übergeordnete Ressource in einer anderen Vorlage bereitgestellt wurde, legen Sie keine Abhängigkeit fest. Stellen Sie stattdessen die untergeordnete Ressource in der gleichen Ressourcengruppe bereit, und geben Sie den Namen der übergeordneten Ressource an.
In diesem Beispiel wird das vorhandene Schlüsselwort verwendet, um auf ein übergeordnetes Element zu verweisen, das in einer separaten Datei bereitgestellt wurde. Die untergeordnete Ressource verwendet das Element parent und den symbolischen Namen der übergeordneten Ressource.
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
}