Risoluzione degli errori di registrazione del provider di risorse

Questo articolo descrive gli errori di registrazione del provider di risorse che si verificano quando si usa un provider di risorse che non è già stato usato nella sottoscrizione di Azure. Gli errori vengono visualizzati quando si distribuiscono le risorse con un file Bicep o un modello di Azure Resource Manager (modello arm). Se Azure non registra automaticamente un provider di risorse, è possibile eseguire una registrazione manuale.

Sintomo

Quando viene distribuita una risorsa, è possibile che venga visualizzato 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}.

In alternativa, si potrebbe ricevere un messaggio simile che indica:

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 in modo da usare un valore suggerito. La maggior parte dei provider viene registrata automaticamente da Microsoft portale di Azure o dall'interfaccia della riga di comando, ma non tutti. Se in precedenza non è stato usato un provider di risorse specifico, potrebbe essere necessario registrare tale provider.

Quando l'arresto automatico della macchina virtuale è disabilitato, potrebbe essere visualizzato un messaggio di errore simile al seguente:

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

Un errore imprevisto può verificarsi per un provider di risorse che non si trova nel modello di Resource Manager o nel file Bicep. Questo errore può verificarsi quando viene distribuita 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.
  • Versione dell'API non supportata per il tipo di risorsa.
  • Percorso non supportato per il tipo di risorsa.
  • Per l'arresto automatico della macchina virtuale, è necessario registrare il Microsoft.DevTestLab provider di risorse.

Soluzione

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

Usare az provider list per visualizzare lo stato di registrazione per i provider di risorse della sottoscrizione. Negli esempi viene usato il --output table parametro per filtrare l'output per 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 di registrazione. Sostituire il valore della query con Registered o NotRegistered.

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

Ottenere lo stato di 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 le posizioni supportate 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"