Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 ramach 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ć rejestrację ręczną.
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 również otrzymać podobny komunikat, który stwierdza:
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 tak, aby używał sugerowanej wartości. Większość dostawców jest rejestrowana automatycznie przez witrynę 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 ...
W przypadku dostawcy zasobów, który nie znajduje się w szablonie usługi ARM lub pliku Bicep, może wystąpić nieoczekiwany błąd. 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 twoim szablonie dodaje zasoby do monitorowania lub poprawia zabezpieczenia. Komunikat o błędzie wskazuje, że należy zarejestrować przestrzeń nazw dostawcy zasobów dla zasobu pomocniczego.
Przyczyna
Te błędy są wyświetlane 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.DevTestLabzasobów.
Rozwiązanie
Interfejs wiersza polecenia platformy Azure umożliwia uzyskanie informacji o stanie rejestracji dostawcy zasobów i zarejestrowaniu dostawcy zasobów.
Użyj az provider list, aby wyświetlić stan rejestracji dostawców zasobów na liście subskrypcji. W przykładach użyto 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 wyświetla listę wszystkich dostawców zasobów subskrypcji oraz informuje, czy są oni Registered lub 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 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 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"