リソース プロバイダーの登録エラーの解決
この記事では、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"