Resolver erros do registo do fornecedor de recursos

Este artigo descreve os erros que podem ocorrer quando utiliza um fornecedor de recursos que não utilizou anteriormente na sua subscrição.

Sintoma

Quando um recurso é implantado, poderá receber o seguinte código de erro e mensagem:

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

Ou, pode receber uma mensagem semelhante que diz:

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

A mensagem de erro deve dar-lhe sugestões para as localizações suportadas e versões API. Pode alterar o seu modelo para utilizar um valor sugerido. A maioria dos fornecedores são registados automaticamente pelo portal Microsoft Azure ou pela interface da linha de comando, mas não todos. Se nunca tenha utilizado um determinado fornecedor de recursos, poderá ter de registar esse fornecedor.

Quando a máquina virtual (VM) estiver desativada, poderá receber uma mensagem de erro semelhante a:

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

Pode ocorrer um erro inesperado para um fornecedor de recursos que não está no seu modelo ARM ou no ficheiro Bicep. Este erro pode ocorrer quando um recurso é implementado que cria outros recursos de suporte. Por exemplo, o recurso no seu modelo adiciona recursos de monitorização ou segurança. A mensagem de erro indica que o espaço de nome do fornecedor de recursos que precisa de registar é para o recurso de suporte.

Causa

Recebe estes erros por uma destas razões:

  • O fornecedor de recursos necessário não foi registado para a sua subscrição.
  • Versão API não suportada para o tipo de recurso.
  • Localização não suportada para o tipo de recurso.
  • Para o encerramento automático da VM, o fornecedor de Microsoft.DevTestLab recursos deve estar registado.

Solução

Pode utilizar o CLI da Azure para obter informações sobre o estado de registo de um fornecedor de recursos e registar um fornecedor de recursos.

Utilize a lista de fornecedores az para mostrar o estado de registo dos fornecedores de recursos da sua subscrição. Os exemplos utilizam o --output table parâmetro para filtrar a saída para a legibilidade. Pode omitir o parâmetro para ver todas as propriedades.

O seguinte comando lista todos os fornecedores de recursos da subscrição e se são Registered ou NotRegistered .

az provider list --output table

Pode filtrar a saída por estado de registo. Substitua o valor de consulta Registered por ou NotRegistered .

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

Obtenha o estado de registo de um fornecedor de recursos específico:

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

Para registar um fornecedor de recursos, utilize o comando de registo do fornecedor az e especifique o espaço de nome para se registar.

az provider register --namespace Microsoft.Cdn

Para obter os locais suportados por um tipo de recurso, use o programa do fornecedor az:

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

Obtenha as versões API suportadas por um tipo de recurso:

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