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

この記事では、これまでサブスクリプションで使用したことがないリソース プロバイダーを使用する際に発生する可能性のあるエラーについて説明します。

注意

この記事では、Azure と対話するために推奨される PowerShell モジュールである Azure Az PowerShell モジュールを使用します。 Az PowerShell モジュールの使用を開始するには、「Azure PowerShell をインストールする」を参照してください。 Az PowerShell モジュールに移行する方法については、「AzureRM から Az への Azure PowerShell の移行」を参照してください。

症状

リソースをデプロイするときに、次のエラー コードとメッセージが表示される場合があります。

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 バージョンがエラー メッセージに提示されます。 提示されたいずれかの値を使用するようにテンプレートを変更してください。 ほとんどのプロバイダーは、Azure portal またはご使用のコマンド ライン インターフェイスによって自動的に登録されますが、登録されない場合もあります。 まだ使ったことがないリソース プロバイダーについては、手動で登録しなければならない場合があります。

または、仮想マシンの自動シャットダウンを無効にすると、次のようなエラー メッセージを受け取ることがあります。

Code: AuthorizationFailed
Message: The client '<identifier>' with object id '<identifier>' does not have authorization to perform action 'Microsoft.Compute/virtualMachines/read' over scope ...

原因

これらのエラーの原因として、次のいずれかの理由が考えられます。

  • サブスクリプションに対して必要なリソース プロバイダーが登録されていない
  • リソース タイプでサポートされた API バージョンに該当しない
  • リソース タイプでサポートされた場所に該当しない
  • VM を自動シャットダウンするには、Microsoft.DevTestLab リソース プロバイダーを登録する必要があります。

解決策 1 - PowerShell

PowerShell では、Get-AzResourceProvider を使用して登録の状態を確認します。

Get-AzResourceProvider -ListAvailable

プロバイダーを登録するには、Register-AzResourceProvider を使用し、登録するリソース プロバイダーの名前を指定します。

Register-AzResourceProvider -ProviderNamespace Microsoft.Cdn

特定のタイプのリソースでサポートされている場所を取得するには、次のコマンドを使用します。

((Get-AzResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes | Where-Object ResourceTypeName -eq sites).Locations

特定のタイプのリソースでサポートされている API バージョンを取得するには、次のコマンドを使用します。

((Get-AzResourceProvider -ProviderNamespace Microsoft.Web).ResourceTypes | Where-Object ResourceTypeName -eq sites).ApiVersions

解決策 2 - Azure CLI

プロバイダーが登録されているかどうかを確認するには、 az provider list コマンドを使用します。

az provider list

リソース プロバイダーを登録するには、 az provider register コマンドを使用し、登録する 名前空間 を指定します。

az provider register --namespace Microsoft.Cdn

特定のリソースの種類に対してサポートされている場所と API バージョンを確認するには、次のコマンドを使用します。

az provider show -n Microsoft.Web --query "resourceTypes[?resourceType=='sites'].locations"

解決策 3 - Azure Portal

ポータルを利用すると、登録の状態を確認したり、リソース プロバイダー名前空間を登録したりできます。

  1. Portal で [すべてのサービス] を選択します。

    [すべてのサービス] を選択する

  2. [サブスクリプション] を選択します。

    [サブスクリプション] を選択する

  3. サブスクリプションの一覧から、リソース プロバイダーの登録に使用するサブスクリプションを選択します。

    リソース プロバイダーを登録するサブスクリプションを選択する

  4. サブスクリプションについては、[リソース プロバイダー] を選択します。

    [リソース プロバイダー] を選択する

  5. リソース プロバイダーの一覧を確認し、必要に応じて [登録] リンクを選択して、デプロイするタイプのリソース プロバイダーを登録します。

    List resource providers