Resolver erros do registo do fornecedor de recursos

Este artigo descreve os erros de registo do fornecedor de recursos que ocorrem quando utiliza um fornecedor de recursos que ainda não utilizou na sua subscrição do Azure. Os erros são apresentados quando implementa recursos com um ficheiro Bicep ou um modelo de Resource Manager do Azure (modelo arm). Se o Azure não registar automaticamente um fornecedor de recursos, pode fazer um registo manual.

Sintoma

Quando um recurso é implementado, 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}.

Em alternativa, poderá receber uma mensagem semelhante a indicar:

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 e versões de API suportadas. Pode alterar o modelo para utilizar um valor sugerido. A maioria dos fornecedores é registada automaticamente pelo Microsoft portal do Azure ou pela interface de linha de comandos, mas não por todos. Se ainda não utilizou um fornecedor de recursos específico, poderá ter de registar esse fornecedor.

Quando o encerramento automático da máquina virtual (VM) estiver desativado, 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 modelo do ARM ou no ficheiro Bicep. Este erro pode ocorrer quando é implementado um recurso 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 nomes do fornecedor de recursos que precisa de registar é para o recurso de suporte.

Causa

Recebe estes erros por um dos seguintes motivos:

  • O fornecedor de recursos necessário não foi registado na sua subscrição.
  • Versão da 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 Microsoft.DevTestLab fornecedor de recursos tem de estar registado.

Solução

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

Utilize az provider list para apresentar 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 legibilidade. Pode omitir o parâmetro para ver todas as propriedades.

O comando seguinte 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 da consulta por Registered 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 az provider register e especifique o espaço de nomes a registar.

az provider register --namespace Microsoft.Cdn

Para obter as localizações suportadas de um tipo de recurso, utilize az provider show:

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

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

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