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 error que ve cuando no se encuentra un recurso durante una operación. Normalmente, aparece este error al implementar recursos con un archivo de Bicep o una plantilla de Azure Resource Manager (plantilla de ARM). También verá este error al realizar tareas de administración y Azure Resource Manager no encuentra el recurso necesario. Por ejemplo, si intenta agregar etiquetas a un recurso que no existe, recibirá este error.
Síntomas
Hay dos códigos de error que indican que no se puede encontrar el recurso. El NotFound
error devuelve un resultado similar al siguiente:
Code=NotFound;
Message=Cannot find ServerFarm with name exampleplan.
El ResourceNotFound
error devuelve un resultado similar al siguiente:
Code=ResourceNotFound;
Message=The Resource 'Microsoft.Storage/storageAccounts/{storage name}' under resource
group {resource group name} was not found.
Causa
Resource Manager debe recuperar las propiedades de un recurso, pero no puede encontrar el recurso en la suscripción.
Solución 1: Comprobación de las propiedades de los recursos
Cuando reciba este error mientras hace una tarea de administración, compruebe los valores que ha proporcionado para el recurso. Los tres valores que se deben comprobar son:
- Nombre del recurso
- Nombre del grupo de recursos
- Suscripción
Si usa PowerShell o la CLI de Azure, compruebe que está ejecutando comandos en la suscripción que contiene el recurso. Puede cambiar la suscripción con Set-AzContext o az account set. Muchos comandos proporcionan un parámetro de suscripción que le permite especificar una suscripción diferente al contexto actual.
Si no puede comprobar las propiedades, inicie sesión en Microsoft Azure Portal. Busque el recurso que intenta usar y examine el nombre del recurso, el grupo de recursos y la suscripción.
Solución 2: Establecimiento de dependencias
Si recibe este error al implementar una plantilla, es posible que tenga que agregar una dependencia. Resource Manager optimiza las implementaciones mediante la creación de recursos en paralelo, siempre que sea posible.
Por ejemplo, al implementar una aplicación web, el plan de App Service debe existir. Si no ha especificado que la aplicación web depende del plan de App Service, Resource Manager crea ambos recursos al mismo tiempo. La aplicación web falla con un error indicando que el recurso del plan de Servicio de Aplicaciones no se encuentra ya que todavía no existe. Para evitar este error, establezca una dependencia en la aplicación web.
Use una dependencia implícita en lugar de la función resourceId . La dependencia se crea mediante el nombre simbólico y la propiedad ID de un recurso.
Por ejemplo, la propiedad serverFarmId
de la aplicación web utiliza servicePlan.id
para crear una dependencia del plan de App Service.
resource webApp 'Microsoft.Web/sites@2022-03-01' = {
properties: {
serverFarmId: servicePlan.id
}
}
resource servicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
...
Para la mayoría de las implementaciones, no es necesario usar dependsOn
para crear una dependencia explícita.
Evite establecer dependencias que no sean necesarias. Las dependencias innecesarias prolongan la duración de la implementación porque los recursos no se implementan en paralelo. Además, puede crear dependencias circulares que bloqueen la implementación.
Orden de implementación
Cuando vea problemas de dependencia, debe obtener información sobre el orden de implementación de recursos. Puede usar el portal para ver el orden de las operaciones de implementación:
Inicie sesión en el portal.
En información general del grupo de recursos, seleccione el vínculo del historial de implementación.
En Nombre de implementación que desea revisar, seleccione Eventos relacionados.
Examine la secuencia de eventos de cada recurso. Preste atención al estado de cada operación y su marca de tiempo. Por ejemplo, en la imagen siguiente se muestran tres cuentas de almacenamiento que se implementan en paralelo. Tenga en cuenta que las tres implementaciones de la cuenta de almacenamiento se iniciaron al mismo tiempo.
En la imagen siguiente se muestran tres cuentas de almacenamiento que no se implementan en paralelo. La segunda cuenta de almacenamiento depende de la primera cuenta de almacenamiento y la tercera cuenta de almacenamiento depende de la segunda cuenta de almacenamiento. La primera cuenta de almacenamiento tiene la etiqueta Started, Accepted y Succeeded antes de que se inicie la siguiente.
Solución 3: Obtención de recursos externos
Bicep usa el nombre simbólico para crear una dependencia implícita en otro recurso. La palabra clave existente hace referencia a un recurso implementado. Si un recurso existente está en un grupo de recursos diferente al recurso que desea implementar, incluya el ámbito y use la función resourceGroup .
En este ejemplo, se implementa una aplicación web que usa un plan de App Service existente de otro grupo de recursos.
resource servicePlan 'Microsoft.Web/serverfarms@2022-03-01' existing = {
name: hostingPlanName
scope: resourceGroup(rgname)
}
resource webApp 'Microsoft.Web/sites@2022-03-01' = {
name: siteName
properties: {
serverFarmId: servicePlan.id
}
}
Solución 4: Obtener identidad administrada desde el recurso
Si va a implementar un recurso con una identidad administrada, debe esperar hasta que ese recurso se implemente antes de recuperar valores en la identidad administrada. Use una dependencia implícita para el recurso al que se aplica la identidad. Este enfoque garantiza que el recurso y la identidad administrada se implementan antes de que Resource Manager use la dependencia.
Puede obtener el id. principal y el id. de inquilino de una identidad administrada que se aplica a una máquina virtual. Por ejemplo, si un recurso de máquina virtual tiene un nombre simbólico de vm
, use la sintaxis siguiente:
vm.identity.principalId
vm.identity.tenantId
Solución 5: Comprobación de funciones
Puede usar el nombre simbólico de un recurso para obtener valores de un recurso. Puede hacer referencia a una cuenta de almacenamiento en el mismo grupo de recursos u otro grupo de recursos mediante un nombre simbólico. Para obtener un valor de un recurso implementado, use la palabra clave existente . Si un recurso está en otro grupo de recursos, use scope
con la función resourceGroup . En la mayoría de los casos, la función de referencia no es necesaria.
En el ejemplo siguiente se hace referencia a una cuenta de almacenamiento existente en otro grupo de recursos.
resource stgAcct 'Microsoft.Storage/storageAccounts@2022-05-01' existing = {
name: stgname
scope: resourceGroup(rgname)
}
Solución 6: Después de eliminar el recurso
Al eliminar un recurso, es posible que haya una cantidad corta de tiempo cuando el recurso aparezca en el portal, pero no esté disponible. Si selecciona el recurso, obtendrá un error que indica que no se encuentra el recurso.
Actualiza el portal y el recurso eliminado debería eliminarse de tu lista de recursos disponibles. Si un recurso eliminado sigue mostrándose como disponible durante más de unos minutos, póngase en contacto con el soporte técnico.