解決資源提供者註冊的錯誤

本文說明當您使用尚未在 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

您可以依註冊狀態篩選輸出。 將查詢值取代為 RegisteredNotRegistered

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"