Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este artículo se describe el ParentResourceNotFound
error que puede obtener al implementar un recurso que depende de un recurso primario. El error se produce al implementar recursos con un archivo de Bicep o una plantilla de Azure Resource Manager (plantilla de ARM).
Síntoma
Al implementar un recurso que es dependiente de otro recurso, es posible que reciba el siguiente error:
Code=ParentResourceNotFound,
Message=Can not perform requested operation on nested resource. Parent resource 'exampleserver' not found."
Causa
Cuando un recurso es secundario a otro recurso, el recurso primario debe existir antes de crear el recurso secundario. El nombre del recurso hijo define la conexión con el recurso padre. El nombre del recurso secundario tiene el formato <parent-resource-name>/<child-resource-name>
. Por ejemplo, una instancia de SQL Database podría definirse como:
resource sqlDatabase 'Microsoft.Sql/servers/databases@2022-02-01-preview' = {
name: '${sqlServerName}/${databaseName}'
...
}
Para más información sobre los recursos primarios y secundarios de Bicep, consulte Establecimiento del nombre y el tipo de los recursos secundarios en Bicep.
Si implementa el servidor y la base de datos en la misma plantilla, pero no especifica una dependencia en el servidor, la implementación de la base de datos podría iniciarse antes de que se haya implementado el servidor. Esto hace que falle la implementación de la base de datos con el error ParentResourceNotFound
.
Si el recurso primario ya existe y no está implementado en la misma plantilla, obtendrá el ParentResourceNotFound
error cuando Resource Manager no puede asociar el recurso secundario a un elemento primario. Este error puede producirse cuando el recurso secundario no tiene el formato correcto. También si el recurso secundario se implementa en un grupo de recursos distinto del grupo de recursos para el recurso primario.
Solución 1: Implementada en la misma plantilla
Para resolver este error, cuando los recursos padre e hijo están implementados en la misma plantilla, utilice una dependencia.
En este ejemplo, se usa un recurso secundario anidado dentro del recurso primario y así se crea la dependencia. El elemento secundario obtiene el tipo de recurso y la versión de la API del recurso primario.
resource sqlServer 'Microsoft.Sql/servers@2022-02-01-preview' = {
name: sqlServerName
properties: {
...
}
resource sqlDatabase 'databases' = {
name: databaseName
...
}
}
Para obtener más información sobre las dependencias, consulte Declaración de recursos en Bicep.
Solución 2: Implementada en diferentes plantillas
Para resolver este error cuando el recurso primario se implementó en una plantilla diferente, no establezca una dependencia. En su lugar, implemente el recurso secundario en el mismo grupo de recursos y proporcione el nombre del recurso primario.
En este ejemplo se usa la palabra clave existente para hacer referencia a un elemento primario que se implementó en un archivo independiente. El recurso secundario usa el elemento parent
y el nombre simbólico del recurso primario.
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
}