この記事では、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
パラメーターを使用して、読みやすくするために出力をフィルター処理します。 パラメーターを省略すると、すべてのプロパティを表示できます。
次のコマンドは、サブスクリプションのすべてのリソース プロバイダーと、それらが 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"