Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cet article décrit l’erreur que vous voyez lorsqu’une ressource est introuvable pendant une opération. En règle générale, vous voyez cette erreur lors du déploiement de ressources avec un fichier Bicep ou un modèle Azure Resource Manager (modèle ARM). Vous voyez également cette erreur lorsque vous effectuez des tâches de gestion et qu’Azure Resource Manager ne trouve pas la ressource requise. Par exemple, si vous essayez d’ajouter des balises à une ressource qui n’existe pas, vous recevez cette erreur.
Symptômes
Il existe deux codes d’erreur qui indiquent que la ressource est introuvable. L’erreur NotFound retourne un résultat similaire à :
Code=NotFound;
Message=Cannot find ServerFarm with name exampleplan.
L’erreur ResourceNotFound retourne un résultat similaire à :
Code=ResourceNotFound;
Message=The Resource 'Microsoft.Storage/storageAccounts/{storage name}' under resource
group {resource group name} was not found.
La cause
Resource Manager doit récupérer les propriétés d’une ressource, mais elle ne peut pas trouver la ressource dans votre abonnement.
Solution 1 : Vérifier les propriétés des ressources
Quand vous obtenez cette erreur pendant que vous effectuez une tâche de gestion, vérifiez les valeurs que vous spécifiez pour la ressource. Les trois valeurs à vérifier sont les suivantes :
- Nom de la ressource
- Nom du groupe de ressources
- Abonnement
Si vous utilisez PowerShell ou Azure CLI, vérifiez que vous exécutez des commandes dans l’abonnement qui contient la ressource. Vous pouvez modifier l’abonnement avec Set-AzContext ou az account set. De nombreuses commandes proposent un paramètre d’abonnement qui vous permet de spécifier un abonnement différent du contexte actuel.
Si vous ne pouvez pas vérifier les propriétés, connectez-vous au portail Microsoft Azure. Recherchez la ressource que vous essayez d’utiliser et examinez le nom de la ressource, le groupe de la ressource et l’abonnement.
Solution 2 : Définir des dépendances
Si vous obtenez cette erreur lors du déploiement d’un modèle, vous devrez peut-être ajouter une dépendance. Resource Manager optimise les déploiements en créant des ressources en parallèle, lorsque cela est possible.
Par exemple, lorsque vous déployez une application web, le plan App Service doit exister. Si vous n’avez pas spécifié que l’application web dépend du plan App Service, Resource Manager crée les deux ressources en même temps. L’application web échoue avec une erreur indiquant que la ressource de plan App Service est introuvable, car elle n’existe pas encore. Vous empêchez cette erreur en définissant une dépendance dans l’application web.
Utilisez une dépendance implicite plutôt que la fonction resourceId . La dépendance est créée à l’aide du nom symbolique et de la propriété ID d’une ressource.
Par exemple, la propriété de l’application web serverFarmId utilise servicePlan.id pour créer une dépendance sur le plan App Service.
resource webApp 'Microsoft.Web/sites@2022-03-01' = {
properties: {
serverFarmId: servicePlan.id
}
}
resource servicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
...
Pour la plupart des déploiements, il n’est pas nécessaire d’utiliser dependsOn pour créer une dépendance explicite.
Évitez de définir des dépendances qui ne sont pas nécessaires. Les dépendances inutiles prolongent la durée du déploiement, car les ressources ne sont pas déployées en parallèle. En outre, vous pouvez créer des dépendances circulaires qui bloquent le déploiement.
Ordre de déploiement
Lorsque vous voyez des problèmes de dépendance, vous devez obtenir un aperçu de l’ordre du déploiement des ressources. Vous pouvez utiliser le portail pour afficher l’ordre des opérations de déploiement :
Connectez-vous au portail.
Dans la vue d’ensemble du groupe de ressources, sélectionnez le lien correspondant à l’historique du déploiement.
Pour le nom de déploiement que vous souhaitez examiner, sélectionnez Événements associés.
Examinez la séquence d’événements pour chaque ressource. Attention à l’état de chaque opération et à son horodatage. Par exemple, l’image suivante montre trois comptes de stockage déployés en parallèle. Notez que les trois déploiements de compte de stockage ont démarré en même temps.
L’image suivante montre trois comptes de stockage qui ne sont pas déployés en parallèle. Le deuxième compte de stockage dépend du premier compte de stockage, et le troisième compte de stockage dépend du deuxième compte de stockage. Le premier compte de stockage est étiqueté Démarré, Accepté et Réussi avant le démarrage suivant.
Solution 3 : Obtenir une ressource externe
Bicep utilise le nom symbolique pour créer une dépendance implicite sur une autre ressource. Le mot clé existant fait référence à une ressource déployée. Si une ressource existante se trouve dans un groupe de ressources différent de la ressource que vous souhaitez déployer, incluez l’étendue et utilisez la fonction resourceGroup .
Dans cet exemple, une application web est déployée qui utilise un plan App Service existant d’un autre groupe de ressources.
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
}
}
Solution 4 : Obtenir une identité managée à partir de la ressource
Si vous déployez une ressource avec une identité managée, vous devez attendre que cette ressource soit déployée avant de récupérer des valeurs sur l’identité managée. Utilisez une dépendance implicite pour la ressource à laquelle l’identité est appliquée. Cette approche garantit que la ressource et l’identité managée sont déployées avant que Resource Manager utilise la dépendance.
Vous pouvez obtenir l’ID du principal et l’ID de locataire pour une identité gérée appliquée à une machine virtuelle. Par exemple, si une ressource de machine virtuelle a un nom symbolique, vmutilisez la syntaxe suivante :
vm.identity.principalId
vm.identity.tenantId
Solution 5 : Vérifier les fonctions
Vous pouvez utiliser le nom symbolique d’une ressource pour obtenir des valeurs d’une ressource. Vous pouvez référencer un compte de stockage dans le même groupe de ressources ou un autre groupe de ressources à l’aide d’un nom symbolique. Pour obtenir une valeur à partir d’une ressource déployée, utilisez le mot clé existant . Si une ressource se trouve dans un autre groupe de ressources, utilisez scope la fonction resourceGroup . Dans la plupart des cas, la fonction de référence n’est pas nécessaire.
L’exemple suivant référence un compte de stockage existant dans un autre groupe de ressources.
resource stgAcct 'Microsoft.Storage/storageAccounts@2022-05-01' existing = {
name: stgname
scope: resourceGroup(rgname)
}
Solution 6 : Après la suppression de la ressource
Lorsque vous supprimez une ressource, il peut y avoir une courte durée lorsque la ressource apparaît dans le portail, mais qu’elle n’est pas disponible. Si vous sélectionnez la ressource, vous obtenez une erreur indiquant que la ressource est introuvable.
Actualisez le portail et la ressource supprimée doit être supprimée de votre liste de ressources disponibles. Si une ressource supprimée continue d’être affichée comme disponible pendant plus de quelques minutes, contactez le support technique.