Résoudre les erreurs d’inscription de fournisseurs de ressources

Cet article décrit les erreurs d’inscription du fournisseur de ressources qui se produisent quand vous utilisez un fournisseur de ressources que vous n’avez pas encore utilisé dans votre abonnement Azure. Les erreurs apparaissent quand vous déployez des ressources avec un fichier Bicep ou un modèle Azure Resource Manager (modèle ARM). Si Azure n’inscrit pas automatiquement un fournisseur de ressources, vous pouvez procéder à une inscription manuelle.

Symptôme

Lorsqu’une ressource est déployée, vous pouvez recevoir le code d’erreur et le message suivants :

Code: NoRegisteredProviderFound
Message: No registered resource provider found for location {location}
and API version {api-version} for type {resource-type}.

Vous pouvez sinon recevoir un message similaire indiquant :

Code: MissingSubscriptionRegistration
Message: The subscription is not registered to use namespace {resource-provider-namespace}

Le message d’erreur doit fournir des suggestions pour les emplacements et les versions d’API pris en charge. Vous pouvez changer votre modèle pour utiliser l’une des valeurs suggérées. La plupart des fournisseurs sont inscrits automatiquement par le portail Microsoft Azure ou l’interface de ligne de commande, mais pas tous. Si vous n’avez pas déjà utilisé un certain fournisseur de ressources, vous devrez peut-être l’inscrire.

Lorsque l’arrêt automatique de machine virtuelle est désactivé, un message d’erreur semblable au suivant peut s’afficher :

Code: AuthorizationFailed
Message: The client '<identifier>' with object id '<identifier>' does not have authorization to perform
action 'Microsoft.Compute/virtualMachines/read' over scope ...

Une erreur inattendue peut se produire pour un fournisseur de ressources qui n’est pas dans votre modèle ARM ou fichier Bicep. Cette erreur peut se produire lorsqu’une ressource est déployée et crée d’autres ressources de support. Par exemple, la ressource de votre modèle ajoute des ressources de surveillance ou de sécurité. Le message d’erreur indique l’espace de noms du fournisseur de ressources que vous devez inscrire pour la ressource de support.

Cause

Ces erreurs apparaissent pour l’une des raisons suivantes :

  • Le fournisseur de ressources requis n’a pas été inscrit pour votre abonnement.
  • La version de l’API n’est pas prise en charge pour le type de ressource.
  • L’emplacement n’est pas pris en charge pour le type de ressource.
  • Pour l’arrêt automatique de la machine virtuelle, le fournisseur de ressources Microsoft.DevTestLab doit être enregistré.

Solution

Vous pouvez utiliser Azure CLI pour obtenir des informations sur l’état d’inscription d’un fournisseur de ressources et inscrire un fournisseur de ressources.

Utilisez az provider list pour afficher l’état d’inscription des fournisseurs de ressources de votre abonnement. Les exemples utilisent le paramètre --output table pour filtrer la sortie afin de la rendre lisible. Vous pouvez omettre le paramètre pour voir toutes les propriétés.

La commande suivante répertorie tous les fournisseurs de ressources de l’abonnement et indique s’ils sont Registered ou NotRegistered.

az provider list --output table

Vous pouvez filtrer la sortie par état d’inscription. Remplacez la valeur de la requête par Registered ou NotRegistered.

az provider list --query "[?registrationState=='Registered']" --output table

Obtenez le statut d’inscription d’un fournisseur de ressources spécifique :

az provider list --query "[?namespace=='Microsoft.Compute']" --output table

Pour inscrire un fournisseur de ressources, utilisez la commande az provider register et indiquez l’espace de noms à inscrire.

az provider register --namespace Microsoft.Cdn

Pour obtenir les emplacements pris en charge d’un type de ressource, utilisez az provider show :

az provider show --namespace Microsoft.Web --query "resourceTypes[?resourceType=='sites'].locations"

Obtenez les versions d’API prises en charge par un type de ressource :

az provider show --namespace Microsoft.Web --query "resourceTypes[?resourceType=='sites'].apiVersions"