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

W tym artykule opisano błędy rejestracji dostawcy zasobów występujące podczas korzystania z dostawcy zasobów, który nie został jeszcze użyty w subskrypcji platformy Azure. Błędy są wyświetlane podczas wdrażania zasobów przy użyciu pliku Bicep lub szablonu usługi Azure Resource Manager (szablon usługi ARM). Jeśli platforma Azure nie zarejestruje automatycznie dostawcy zasobów, możesz przeprowadzić ręczną rejestrację.

Objaw

Po wdrożeniu 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żesz też otrzymać podobny komunikat informujący o następujących stanach:

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

Komunikat o błędzie powinien zawierać sugestie dotyczące obsługiwanych lokalizacji i wersji interfejsu API. Możesz zmienić szablon, aby użyć sugerowanej wartości. Większość dostawców jest rejestrowana automatycznie przez firmę Microsoft Azure Portal lub interfejs wiersza polecenia, ale nie wszystkie. Jeśli wcześniej nie użyto określonego dostawcy zasobów, może być konieczne zarejestrowanie tego dostawcy.

Gdy automatyczne zamykanie maszyny wirtualnej jest wyłączone, może zostać wyświetlony komunikat o błędzie podobny do następującego:

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

Może wystąpić nieoczekiwany błąd dostawcy zasobów, który nie znajduje się w szablonie usługi ARM lub pliku Bicep. Ten błąd może wystąpić, gdy zostanie wdrożony zasób, który tworzy inne zasoby pomocnicze. Na przykład zasób w szablonie dodaje zasoby monitorowania lub zabezpieczeń. Komunikat o błędzie wskazuje przestrzeń nazw dostawcy zasobów, którą należy zarejestrować, jest przeznaczona dla zasobu pomocniczego.

Przyczyna

Te błędy są odbierane z jednego z następujących 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 maszyny wirtualnej należy zarejestrować dostawcę Microsoft.DevTestLab zasobów.

Rozwiązanie

Możesz użyć interfejsu wiersza polecenia platformy Azure, aby uzyskać informacje o stanie rejestracji dostawcy zasobów i zarejestrować dostawcę zasobów.

Użyj polecenia az provider list , aby wyświetlić stan rejestracji dla dostawców zasobów subskrypcji. Przykłady używają parametru --output table do filtrowania danych wyjściowych pod kątem czytelności. Możesz pominąć parametr, aby wyświetlić wszystkie właściwości.

Poniższe polecenie zawiera listę wszystkich dostawców zasobów subskrypcji oraz niezależnie od tego, czy są Registered dostawcami zasobów, czy NotRegistered.

az provider list --output table

Dane wyjściowe można filtrować według stanu rejestracji. Zastąp wartość zapytania wartością Registered lub NotRegistered.

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

Uzyskaj stan rejestracji dla określonego dostawcy zasobów:

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

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

az provider register --namespace Microsoft.Cdn

Aby uzyskać obsługiwane lokalizacje typu zasobu, użyj polecenia az provider show:

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

Pobierz obsługiwane wersje interfejsu API typu zasobu:

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