Risoluzione degli errori di registrazione del provider di risorse

Questo articolo descrive gli errori di registrazione del provider di risorse che si possono verificare se si usa un provider di risorse che non è già stato usato nella sottoscrizione di Azure. Gli errori vengono visualizzati quando si implementano risorse con un file Bicep o un modello di Azure Resource Manager (modello di ARM). Se Azure non registra automaticamente un provider di risorse, è possibile procedere alla registrazione manuale.

Sintomo

Quando si distribuisce una risorsa, potrebbero essere visualizzati il codice di errore e il messaggio seguenti:

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

Altrimenti potrebbe essere visualizzato un messaggio simile:

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

Il messaggio di errore dovrebbe fornire suggerimenti per le versioni di API e i percorsi supportati. È possibile modificare il modello per utilizzare un valore suggerito. La maggior parte dei provider, ma non tutti, viene registrata automaticamente dal portale di Microsoft Azure o dall'interfaccia della riga di comando che si sta usando. Se un dato provider di risorse non è mai stato utilizzato, potrebbe essere necessario registrarlo.

Quando l'arresto automatico della macchina virtuale è disabilitato, potrebbe essere visualizzato un messaggio di errore di questo tipo:

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

Si può verificare un errore imprevisto per un provider di risorse che non si trova nel modello di ARM o nel file Bicep. Questo errore si può verificare quando si distribuisce una risorsa che crea altre risorse di supporto. Ad esempio, la risorsa nel modello aggiunge risorse di monitoraggio o di sicurezza. Il messaggio di errore indica che lo spazio dei nomi del provider di risorse da registrare è per la risorsa di supporto.

Causa

Questi errori vengono visualizzati per uno di questi motivi:

  • Il provider di risorse richiesto non è stato registrato per la sottoscrizione.
  • La versione dell'API non è supportata per il tipo di risorsa.
  • Il percorso non è supportato per il tipo di risorsa.
  • Per l'arresto automatico della macchina virtuale, è necessario registrare il provider di risorse Microsoft.DevTestLab.

Soluzione

È possibile usare l'interfaccia della riga di comando di Azure per ottenere informazioni sullo stato della registrazione di un provider di risorse e per registrarlo.

Usare az provider list per visualizzare lo stato della registrazione per i provider di risorse della sottoscrizione. Negli esempi viene usato il parametro --output table per filtrare l'output per migliorare la leggibilità. È possibile omettere il parametro per visualizzare tutte le proprietà.

Il comando seguente elenca tutti i provider di risorse della sottoscrizione e se sono Registered o NotRegistered.

az provider list --output table

È possibile filtrare l'output in base allo stato della registrazione. Sostituire il valore della query con Registered o NotRegistered.

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

Ottenere lo stato della registrazione per un provider di risorse specifico:

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

Per registrare un provider di risorse, usare il comando az provider register e specificare lo spazio dei nomi da registrare.

az provider register --namespace Microsoft.Cdn

Per ottenere i percorsi supportati di un tipo di risorsa, usare az provider show:

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

Ottenere le versioni API supportate di un tipo di risorsa:

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