Compartir a través de


Resolución de errores de recurso no encontrado

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:

  1. Inicie sesión en el portal.

  2. En información general del grupo de recursos, seleccione el vínculo del historial de implementación.

    Captura de pantalla de Azure Portal en la que se resalta el vínculo al historial de implementación de un grupo de recursos en la sección Información general.

  3. En Nombre de implementación que desea revisar, seleccione Eventos relacionados.

    Captura de pantalla de Azure Portal que muestra un nombre de implementación con el vínculo Eventos relacionados resaltado en el historial de implementación.

  4. 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.

    Captura de pantalla del registro de actividad de Azure Portal que muestra tres cuentas de almacenamiento implementadas en paralelo, con sus marcas de tiempo y estados.

    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.

    Captura de pantalla del registro de actividad de Azure Portal que muestra tres cuentas de almacenamiento implementadas en orden secuencial, con sus marcas de tiempo y estados.

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.

Captura de pantalla de Azure Portal que muestra un recurso eliminado con un mensaje de error

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.