次の方法で共有


リソース プロバイダー登録のエラーを解決する

この記事では、Azure サブスクリプションでまだ使用していないリソース プロバイダーを使用するときに発生するリソース プロバイダー登録エラーについて説明します。 エラーは、Bicep ファイルまたは Azure Resource Manager テンプレート (ARM テンプレート) を使用してリソースをデプロイすると表示されます。 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 portal またはコマンド ライン インターフェイスによって自動的に登録されますが、すべてではありません。 特定のリソース プロバイダーを使用したことがない場合は、そのプロバイダーの登録が必要になることがあります。

仮想マシン (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 パラメーターを使用して、読みやすくするために出力をフィルター処理します。 パラメーターを省略すると、すべてのプロパティを表示できます。

次のコマンドは、サブスクリプションのすべてのリソース プロバイダーと、それらが RegisteredNotRegisteredかを一覧表示します。

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"