Usuwanie błędów związanych z rejestracją dostawcy zasobów

W tym artykule opisano błędy, które mogą wystąpić podczas korzystania z dostawcy zasobów, który nie był wcześniej używany w subskrypcji.

Uwaga

Ten artykuł został zaktualizowany o korzystanie z modułu Azure Az programu PowerShell. Moduł Az programu PowerShell jest zalecanym modułem programu PowerShell na potrzeby interakcji z platformą Azure. Aby rozpocząć pracę z modułem Azure PowerShell, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az PowerShell, zobacz Migracja programu Azure PowerShell z modułu AzureRM do modułu Az.

Objaw

Podczas wdrażania zasobu może zostać wyświetlony następujący kod błędu i komunikat:

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

Może też zostać wyświetlony podobny komunikat z komunikatem:

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

Komunikat o błędzie powinien zwracać sugestie dotyczące obsługiwanych lokalizacji i wersji interfejsu API. Możesz zmienić szablon na jedną z sugerowanych wartości. Większość dostawców jest rejestrowanych automatycznie przez Azure Portal lub interfejs wiersza polecenia, z których korzystasz, ale nie wszystkich. Jeśli wcześniej nie używaliśmy określonego dostawcy zasobów, może być konieczne zarejestrowanie tego dostawcy.

Lub podczas wyłączania automatycznego zamykania maszyn wirtualnych może zostać wyświetlony komunikat o błędzie podobny do:

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

Przyczyna

Te błędy występują z jednego z tych powodów:

  • Wymagany dostawca zasobów nie został zarejestrowany dla Twojej subskrypcji
  • Wersja interfejsu API nie jest obsługiwana dla typu zasobu
  • Lokalizacja nie jest obsługiwana dla typu zasobu
  • W przypadku automatycznego zamykania maszyn wirtualnych należy zarejestrować dostawcę zasobów Microsoft.DevTestLab.

Rozwiązanie 1 — PowerShell

W przypadku programu PowerShell użyj polecenia Get-AzResourceProvider, aby wyświetlić stan rejestracji.

Get-AzResourceProvider -ListAvailable

Aby zarejestrować dostawcę, użyj nazwy register-AzResourceProvider i podaj nazwę dostawcy zasobów, który chcesz zarejestrować.

Register-AzResourceProvider -ProviderNamespace Microsoft.Cdn

Aby uzyskać obsługiwane lokalizacje dla określonego typu zasobu, użyj:

((Get-AzResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes | Where-Object ResourceTypeName -eq sites).Locations

Aby uzyskać obsługiwane wersje interfejsu API dla określonego typu zasobu, użyj:

((Get-AzResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes | Where-Object ResourceTypeName -eq sites).ApiVersions

Rozwiązanie 2 — interfejs wiersza polecenia platformy Azure

Aby sprawdzić, czy dostawca jest zarejestrowany, użyj az provider list polecenia .

az provider list

Aby zarejestrować dostawcę zasobów, użyj az provider register polecenia i określ przestrzeń nazw do zarejestrowania.

az provider register --namespace Microsoft.Cdn

Aby wyświetlić obsługiwane lokalizacje i wersje interfejsu API dla typu zasobu, użyj:

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

Rozwiązanie 3 — Azure Portal

Stan rejestracji można sprawdzić i zarejestrować przestrzeń nazw dostawcy zasobów za pośrednictwem portalu.

  1. W portalu wybierz pozycję Wszystkie usługi.

    Wybierz wszystkie usługi

  2. Wybierz pozycję Subskrypcje.

    Wybieranie subskrypcji

  3. Z listy subskrypcji wybierz subskrypcję, której chcesz użyć do zarejestrowania dostawcy zasobów.

    Wybierz subskrypcję, aby zarejestrować dostawcę zasobów

  4. W przypadku subskrypcji wybierz pozycję Dostawcy zasobów.

    Wybieranie dostawców zasobów

  5. Przyjrzyj się liście dostawców zasobów i w razie potrzeby wybierz link Zarejestruj, aby zarejestrować dostawcę zasobów typu, który próbujesz wdrożyć.

    Lista dostawców zasobów