解決資源提供者註冊的錯誤
本文說明當您使用尚未在 Azure 訂閱中使用的資源提供者時,所發生的資源提供者註冊錯誤。 當您使用 Azure Resource Manager 範本 (ARM 範本) 或 Bicep 檔案部署資源時,就會顯示此錯誤。 如果 Azure 未自動註冊資源提供者,您可以手動註冊。
徵兆
部署資源時,您可能會收到下列錯誤碼和訊息:
Code: NoRegisteredProviderFound
Message: No registered resource provider found for location {location}
and API version {api-version} for type {resource-type}.
或者,您可能會收到類似訊息,指出︰
Code: MissingSubscriptionRegistration
Message: The subscription is not registered to use namespace {resource-provider-namespace}
錯誤訊息應可提供給您支援的位置和 API 版本建議。 您可以變更範本以使用建議的值。 Microsoft Azure 入口網站或命令列介面會自動註冊大部分的提供者,但並非全部。 如果您未曾使用特定的資源提供者,您可能需要註冊該提供者。
當虛擬機器 (VM) 自動關機停用時,您可能會收到如下的錯誤訊息:
Code: AuthorizationFailed
Message: The client '<identifier>' with object id '<identifier>' does not have authorization to perform
action 'Microsoft.Compute/virtualMachines/read' over scope ...
不在 ARM 範本或 Bicep 檔案中的資源提供者可能會發生非預期的錯誤。 當部署的資源會建立其他支援資源時,就可能發生此錯誤。 例如,假設範本中的資源新增了監視或安全性資源。 錯誤訊息指出您需要註冊的資源提供者命名空間用於支援資源。
原因
您會因為下列其中一個原因而收到此錯誤︰
- 尚未向您的訂用帳戶註冊所需的資源提供者。
- 此資源類型不支援 API 版本。
- 此資源類型不支援位置。
- 針對 VM 自動關機,必須註冊
Microsoft.DevTestLab
資源提供者。
解決方案
您可以使用 Azure CLI 取得資源提供者註冊狀態的相關資訊,並註冊資源提供者。
使用 az provider list 來顯示您的訂用帳戶資源提供者的註冊狀態。 這些範例使用 --output table
參數來篩選輸出,以便閱讀。 您可以省略參數以查看所有屬性。
下列命令會列出所有訂用帳戶的資源提供者,及其狀態為 Registered
還是 NotRegistered
。
az provider list --output table
您可以依註冊狀態篩選輸出。 將查詢值取代為 Registered
或 NotRegistered
。
az provider list --query "[?registrationState=='Registered']" --output table
取得特定資源提供者的註冊狀態:
az provider list --query "[?namespace=='Microsoft.Compute']" --output table
若要註冊資源提供者,請使用 az provider register 命令,然後指定要註冊的命名空間。
az provider register --namespace Microsoft.Cdn
若要取得資源類型的支援位置,請使用 az provider show:
az provider show --namespace Microsoft.Web --query "resourceTypes[?resourceType=='sites'].locations"
取得某個資源類型支援的 API 版本:
az provider show --namespace Microsoft.Web --query "resourceTypes[?resourceType=='sites'].apiVersions"