Azure リソース プロバイダーと種類

Azure リソース プロバイダーは、特定の Azure サービスの機能を有効化する REST 操作のセットです。 たとえば、Key Vault サービスは、Microsoft.KeyVault という名前のリソース プロバイダーで構成されます。 リソース プロバイダーでは、コンテナー、シークレット、キー、証明書を操作するための REST 操作が定義されます。

リソース プロバイダーでは、アカウントにデプロイできる Azure リソースが定義されます。 リソースの種類を表す名前は、{resource-provider}/{resource-type} のような形式になります。 キー コンテナーのリソースの種類は Microsoft.KeyVault/vaults です。

この記事では、次のことについて説明します。

  • Azure のすべてのリソース プロバイダーを表示する
  • リソース プロバイダーの登録ステータスを確認する
  • リソース プロバイダーを登録する
  • リソース プロバイダーのリソースの種類を表示する
  • リソースの種類の有効な場所を表示する
  • リソースの種類の有効な API のバージョンを表示する

リソース プロバイダーを Azure サービスにマップされるリストについては、「Resource providers for Azure services」 (Azure サービスのリソースプロバイダー) を参照してください。

リソース プロバイダーの登録

リソース プロバイダーを使用する前に、Azure サブスクリプションがリソース プロバイダーに登録されていることを確認する必要があります。 登録により、サブスクリプションがリソース プロバイダーと連携するように構成されます。

重要

リソース プロバイダーの登録は、それを使用する準備ができた場合のみ行ってください。 この登録手順は、サブスクリプション内で最小限の特権を維持するのに役立ちます。 悪意のあるユーザーは、未登録のリソース プロバイダーを使用することはできません。

不要なリソース プロバイダーの登録は、認識されないアプリが Microsoft Entra テナントに表示される原因となる可能性があります。 Microsoft は、登録時にリソース プロバイダーのアプリを追加します。 これらのアプリは、通常、Windows Azure Service Management API によって追加されます。 テナント内に不要なアプリがないようにするには、必要なリソース プロバイダーのみを登録します。

一部のリソース プロバイダーが既定で登録されています。 既定で登録されているリソース プロバイダーの一覧については、「Azure サービスのリソース プロバイダー」を参照してください。

その他のリソース プロバイダーは、特定のアクションを実行すると自動的に登録されます。 ポータルを使用してリソースを作成すると、通常、リソース プロバイダーが自動的に登録されます。 Azure Resource Manager テンプレートまたは Bicep ファイルをデプロイすると、テンプレートに定義されているリソース プロバイダーが自動的に登録されます。 場合によっては、テンプレート内のリソースで、テンプレートにないサポート リソースが必要になる場合があります。 一般的な例としては、監視リソースやセキュリティ リソースがあります。 これらのリソース プロバイダーを手動で登録する必要があります。

他のシナリオでは、場合によっては、リソース プロバイダーを手動で登録する必要があります。

重要

アプリケーション コードによって、登録中状態にあるリソース プロバイダーのリソースの作成がブロックされるべきではありません。 リソース プロバイダーを登録すると、サポートされているリージョンごとに操作が個別に実行されます。 リージョンにリソースを作成する際は、そのリージョンでのみ登録を完了する必要があります。 登録中の状態にあるリソース プロバイダーがブロックされないようにすることで、すべてのリージョンの完了まで待機するよりもはるかに早くアプリケーションを続行できます。

リソース プロバイダーの /register/action 操作を実行するためのアクセス許可が必要です。 このアクセス許可は、共同作成者ロールと所有者ロールに含まれます。

サブスクリプション内に特定のリソース プロバイダーからのリソースの種類がまだある場合、そのリソース プロバイダーの登録を解除することはできません。

リソース プロバイダーが使用する必要がある新しい場所をサポートしている場合は、リソース プロバイダーを再登録します。

Azure portal

リソース プロバイダーの登録

すべてのリソース プロバイダー、およびサブスクリプションの登録状態を表示するには、以下を実行します。

  1. Azure portal にサインインします。

  2. Azure portal のメニューでサブスクリプションを検索します。 使用可能なオプションから、それを選択します。

    Azure portal でサブスクリプションを検索する画面のスクリーンショット。

  3. 表示するサブスクリプションを選択します。

  4. 左側のメニューの [設定] で、 [リソース プロバイダー] を選択します。

    Azure portal でリソース プロバイダーを選択する画面のスクリーンショット。

  5. 登録するリソース プロバイダーを検索します。

    Azure portal でリソース プロバイダーを検索する画面のスクリーンショット。

  6. リソース プロバイダーを選択し、リソース プロバイダーの詳細を表示します。

    Azure portal の [リソース プロバイダーの詳細] を示すスクリーンショット。

  7. リソース プロバイダーを選択し、[登録] を選択します。 サブスクリプションで最小限の特権を維持するには、使用する準備ができたリソース プロバイダーのみ登録します。

    Azure portal でリソース プロバイダーを登録する画面のスクリーンショット。

    重要

    前述のように登録中状態にあるリソース プロバイダーのリソースの作成をブロックしないでください。 登録中の状態にあるリソース プロバイダーがブロックされないようにすることで、すべてのリージョンの完了まで待機するよりもはるかに早くアプリケーションを続行できます。

  8. リソース プロバイダーを再登録して、前回の登録依頼追加されていた場所を使用します。

    Azure portal でリソース プロバイダーを再登録する画面のスクリーンショット。

リソース プロバイダーの表示

特定のリソース プロバイダーの情報を表示するには、以下を実行します。

  1. Azure portal にサインインします。

  2. Azure portal のメニューで、[すべてのサービス] を選択します。

  3. [すべてのサービス] ボックスで "リソース エクスプ ローラー (resource explorer)" と入力し、[リソース エクスプ ローラー] を選択します。

    Azure Resource Explorer にアクセスするために Azure portal で [すべてのサービス] を選択する画面のスクリーンショット。

  4. 右矢印を選択して [プロバイダー] を展開します。

    Azure Resource Provider で [プロバイダー] セクションを拡張しているところを示すスクリーンショット。

  5. 表示するリソース プロバイダーとリソースの種類を展開します。

  6. リソース マネージャーはすべてのリージョンでサポートされていますが、デプロイするリソースはすべてのリージョンではサポートされていない場合があります。 また、サブスクリプションでの制限により、リソースをサポートする一部のリージョンを使用できない場合があります。 リソース エクスプローラーでは、リソースの種類の有効な場所が表示されます。

    Azure Resource Explorer でリソースの種類の有効な場所を表示する画面のスクリーンショット。

  7. API バージョンは、リソース プロバイダーの REST API 操作のバージョンに対応しています。 リソース プロバイダーは、新しい機能を有効にすると、REST API の新しいバージョンをリリースします。 リソース エクスプローラーでは、リソースの種類の有効 API のバージョンが表示されます。

    Azure Resource Explorer でのリソースの種類の有効な API バージョンを表示する画面のスクリーンショット。

Azure PowerShell

Azure ですべてのリソース プロバイダーおよびサブスクリプションの登録状態を表示するには、次のコマンドを使用します。

Get-AzResourceProvider -ListAvailable | Select-Object ProviderNamespace, RegistrationState

このコマンドによって次の情報が返されます。

ProviderNamespace                RegistrationState
-------------------------------- ------------------
Microsoft.ClassicCompute         Registered
Microsoft.ClassicNetwork         Registered
Microsoft.ClassicStorage         Registered
Microsoft.CognitiveServices      Registered
...

サブスクリプションに登録されているリソース プロバイダーをすべて確認するには、次のコマンドを使用します。

 Get-AzResourceProvider -ListAvailable | Where-Object RegistrationState -eq "Registered" | Select-Object ProviderNamespace, RegistrationState | Sort-Object ProviderNamespace

サブスクリプションで最小限の特権を維持するには、使用する準備ができたリソース プロバイダーのみ登録します。 リソース プロバイダーを登録するには、次のコマンドを使用します。

Register-AzResourceProvider -ProviderNamespace Microsoft.Batch

このコマンドによって次の情報が返されます。

ProviderNamespace : Microsoft.Batch
RegistrationState : Registering
ResourceTypes     : {batchAccounts, operations, locations, locations/quotas}
Locations         : {West Europe, East US, East US 2, West US...}

重要

前述のように登録中状態にあるリソース プロバイダーのリソースの作成をブロックしないでください。 登録中の状態にあるリソース プロバイダーがブロックされないようにすることで、すべてのリージョンの完了まで待機するよりもはるかに早くアプリケーションを続行できます。

以前の登録以降に追加された場所を使用するように、リソース プロバイダーを再登録します。 再登録するには、登録コマンドをもう一度実行します。

特定のリソース プロバイダーの情報を表示するには、次のコマンドを使用します。

Get-AzResourceProvider -ProviderNamespace Microsoft.Batch

このコマンドによって次の情報が返されます。

{ProviderNamespace : Microsoft.Batch
RegistrationState : Registered
ResourceTypes     : {batchAccounts}
Locations         : {West Europe, East US, East US 2, West US...}

...

リソース プロバイダーのリソースの種類を表示するには、次のコマンドを使用します。

(Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes.ResourceTypeName

このコマンドによって次の情報が返されます。

batchAccounts
operations
locations
locations/quotas

API バージョンは、リソース プロバイダーの REST API 操作のバージョンに対応しています。 リソース プロバイダーは、新しい機能を有効にすると、REST API の新しいバージョンをリリースします。

リソースの種類の使用可能な API バージョンを取得するには、次のコマンドを使用します。

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes | Where-Object ResourceTypeName -eq batchAccounts).ApiVersions

このコマンドによって次の情報が返されます。

2023-05-01
2022-10-01
2022-06-01
2022-01-01
2021-06-01
2021-01-01
...

リソース マネージャーはすべてのリージョンでサポートされていますが、デプロイするリソースはすべてのリージョンではサポートされていない場合があります。 また、サブスクリプションでの制限により、リソースをサポートする一部のリージョンを使用できない場合があります。

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

((Get-AzResourceProvider -ProviderNamespace Microsoft.Batch).ResourceTypes | Where-Object ResourceTypeName -eq batchAccounts).Locations

このコマンドによって次の情報が返されます。

West Europe
East US
East US 2
West US
...

Azure CLI

Azure ですべてのリソース プロバイダーおよびサブスクリプションの登録状態を表示するには、次のコマンドを使用します。

az provider list --query "[].{Provider:namespace, Status:registrationState}" --out table

このコマンドによって次の情報が返されます。

Provider                         Status
-------------------------------- ----------------
Microsoft.ClassicCompute         Registered
Microsoft.ClassicNetwork         Registered
Microsoft.ClassicStorage         Registered
Microsoft.CognitiveServices      Registered
...

サブスクリプションに登録されているリソース プロバイダーをすべて確認するには、次のコマンドを使用します。

az provider list --query "sort_by([?registrationState=='Registered'].{Provider:namespace, Status:registrationState}, &Provider)" --out table

サブスクリプションで最小限の特権を維持するには、使用する準備ができたリソース プロバイダーのみ登録します。 リソース プロバイダーを登録するには、次のコマンドを使用します。

az provider register --namespace Microsoft.Batch

このコマンドによって、登録が進行中であることを示すメッセージが返されます。

特定のリソース プロバイダーの情報を表示するには、次のコマンドを使用します。

az provider show --namespace Microsoft.Batch

このコマンドによって次の情報が返されます。

{
    "id": "/subscriptions/####-####/providers/Microsoft.Batch",
    "namespace": "Microsoft.Batch",
    "registrationsState": "Registering",
    "resourceTypes:" [
        ...
    ]
}

重要

前述のように登録中状態にあるリソース プロバイダーのリソースの作成をブロックしないでください。 登録中の状態にあるリソース プロバイダーがブロックされないようにすることで、すべてのリージョンの完了まで待機するよりもはるかに早くアプリケーションを続行できます。

リソース プロバイダーのリソースの種類を表示するには、次のコマンドを使用します。

az provider show --namespace Microsoft.Batch --query "resourceTypes[*].resourceType" --out table

このコマンドによって次の情報が返されます。

Result
---------------
batchAccounts
operations
locations
locations/quotas

API バージョンは、リソース プロバイダーの REST API 操作のバージョンに対応しています。 リソース プロバイダーは、新しい機能を有効にすると、REST API の新しいバージョンをリリースします。

リソースの種類の使用可能な API バージョンを取得するには、次のコマンドを使用します。

az provider show --namespace Microsoft.Batch --query "resourceTypes[?resourceType=='batchAccounts'].apiVersions | [0]" --out table

このコマンドによって次の情報が返されます。

Result
---------------
2023-05-01
2022-10-01
2022-06-01
2022-01-01
...

リソース マネージャーはすべてのリージョンでサポートされていますが、デプロイするリソースはすべてのリージョンではサポートされていない場合があります。 また、サブスクリプションでの制限により、リソースをサポートする一部のリージョンを使用できない場合があります。

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

az provider show --namespace Microsoft.Batch --query "resourceTypes[?resourceType=='batchAccounts'].locations | [0]" --out table

このコマンドによって次の情報が返されます。

Result
---------------
West Europe
East US
East US 2
West US
...

Python

Azure ですべてのリソース プロバイダーおよびサブスクリプションの登録状態を表示するには、次のコマンドを使用します。

import os  
from azure.identity import DefaultAzureCredential  
from azure.mgmt.resource import ResourceManagementClient  
  
# Authentication  
credential = DefaultAzureCredential()  
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]  
  
# Initialize Resource Management client  
resource_management_client = ResourceManagementClient(credential, subscription_id)  
  
# List available resource providers and select ProviderNamespace and RegistrationState  
providers = resource_management_client.providers.list()  
  
for provider in providers:  
    print(f"ProviderNamespace: {provider.namespace}, RegistrationState: {provider.registration_state}")  

このコマンドによって次の情報が返されます。

ProviderNamespace: Microsoft.AlertsManagement, RegistrationState: Registered
ProviderNamespace: Microsoft.AnalysisServices, RegistrationState: Registered
ProviderNamespace: Microsoft.ApiManagement, RegistrationState: Registered
ProviderNamespace: Microsoft.Authorization, RegistrationState: Registered
ProviderNamespace: Microsoft.Batch, RegistrationState: Registered
...

サブスクリプションに登録されているリソース プロバイダーをすべて確認するには、次のコマンドを使用します。

# List available resource providers with RegistrationState "Registered" and select ProviderNamespace and RegistrationState  
providers = resource_management_client.providers.list()  
registered_providers = [provider for provider in providers if provider.registration_state == "Registered"]  
  
# Sort by ProviderNamespace  
sorted_registered_providers = sorted(registered_providers, key=lambda x: x.namespace)  
  
for provider in sorted_registered_providers:  
    print(f"ProviderNamespace: {provider.namespace}, RegistrationState: {provider.registration_state}")  

サブスクリプションで最小限の特権を維持するには、使用する準備ができたリソース プロバイダーのみ登録します。 リソース プロバイダーを登録するには、次のコマンドを使用します。

import os  
from azure.identity import DefaultAzureCredential  
from azure.mgmt.resource import ResourceManagementClient  
  
# Authentication  
credential = DefaultAzureCredential()  
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]  
  
# Initialize Resource Management client  
resource_management_client = ResourceManagementClient(credential, subscription_id)  
  
# Register resource provider  
provider_namespace = "Microsoft.Batch"  
registration_result = resource_management_client.providers.register(provider_namespace)  
  
print(f"ProviderNamespace: {registration_result.namespace}, RegistrationState: {registration_result.registration_state}")  

このコマンドによって次の情報が返されます。

ProviderNamespace: Microsoft.Batch, RegistrationState: Registered

重要

前述のように登録中状態にあるリソース プロバイダーのリソースの作成をブロックしないでください。 登録中の状態にあるリソース プロバイダーがブロックされないようにすることで、すべてのリージョンの完了まで待機するよりもはるかに早くアプリケーションを続行できます。

以前の登録以降に追加された場所を使用するように、リソース プロバイダーを再登録します。 再登録するには、登録コマンドをもう一度実行します。

特定のリソース プロバイダーの情報を表示するには、次のコマンドを使用します。

import os  
from azure.identity import DefaultAzureCredential  
from azure.mgmt.resource import ResourceManagementClient  
  
# Authentication  
credential = DefaultAzureCredential()  
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]  
  
# Initialize Resource Management client  
resource_management_client = ResourceManagementClient(credential, subscription_id)  
  
# Get resource provider by ProviderNamespace  
provider_namespace = "Microsoft.Batch"  
provider = resource_management_client.providers.get(provider_namespace)  
  
print(f"ProviderNamespace: {provider.namespace}, RegistrationState: {provider.registration_state}\n")  
  
# Add resource types, locations, and API versions with new lines to separate results  
for resource_type in provider.resource_types:  
    print(f"ResourceType: {resource_type.resource_type}\nLocations: {', '.join(resource_type.locations)}\nAPIVersions: {', '.join(resource_type.api_versions)}\n")  

このコマンドによって次の情報が返されます。

ProviderNamespace: Microsoft.Batch, RegistrationState: Registered

ResourceType: batchAccounts
Locations: West Europe, East US, East US 2, West US, North Central US, Brazil South, North Europe, Central US, East Asia, Japan East, Australia Southeast, Japan West, Korea South, Korea Central, Southeast Asia, South Central US, Australia East, Jio India West, South India, Central India, West India, Canada Central, Canada East, UK South, UK West, West Central US, West US 2, France Central, South Africa North, UAE North, Australia Central, Germany West Central, Switzerland North, Norway East, Brazil Southeast, West US 3, Sweden Central, Qatar Central, Poland Central, East US 2 EUAP, Central US EUAP
APIVersions: 2023-05-01, 2022-10-01, 2022-06-01, 2022-01-01, 2021-06-01, 2021-01-01, 2020-09-01, 2020-05-01, 2020-03-01-preview, 2020-03-01, 2019-08-01, 2019-04-01, 2018-12-01, 2017-09-01, 2017-05-01, 2017-01-01, 2015-12-01, 2015-09-01, 2015-07-01, 2014-05-01-privatepreview

...

リソース プロバイダーのリソースの種類を表示するには、次のコマンドを使用します。

# Get resource provider by ProviderNamespace  
provider_namespace = "Microsoft.Batch"  
provider = resource_management_client.providers.get(provider_namespace)  
  
# Get ResourceTypeName of the resource types  
resource_type_names = [resource_type.resource_type for resource_type in provider.resource_types]  
  
for resource_type_name in resource_type_names:  
    print(resource_type_name)  

このコマンドによって次の情報が返されます。

batchAccounts
batchAccounts/pools
batchAccounts/detectors
batchAccounts/certificates
operations
locations
locations/quotas
locations/checkNameAvailability
locations/accountOperationResults
locations/virtualMachineSkus
locations/cloudServiceSkus

API バージョンは、リソース プロバイダーの REST API 操作のバージョンに対応しています。 リソース プロバイダーは、新しい機能を有効にすると、REST API の新しいバージョンをリリースします。

リソースの種類の使用可能な API バージョンを取得するには、次のコマンドを使用します。

# Get resource provider by ProviderNamespace  
provider_namespace = "Microsoft.Batch"  
provider = resource_management_client.providers.get(provider_namespace)  
  
# Filter resource type by ResourceTypeName and get its ApiVersions  
resource_type_name = "batchAccounts"  
api_versions = [  
    resource_type.api_versions  
    for resource_type in provider.resource_types  
    if resource_type.resource_type == resource_type_name  
]  
  
for api_version in api_versions[0]:  
    print(api_version)  

このコマンドによって次の情報が返されます。

2023-05-01
2022-10-01
2022-06-01
2022-01-01
...

リソース マネージャーはすべてのリージョンでサポートされていますが、デプロイするリソースはすべてのリージョンではサポートされていない場合があります。 また、サブスクリプションでの制限により、リソースをサポートする一部のリージョンを使用できない場合があります。

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

# Get resource provider by ProviderNamespace  
provider_namespace = "Microsoft.Batch"  
provider = resource_management_client.providers.get(provider_namespace)  
  
# Filter resource type by ResourceTypeName and get its Locations  
resource_type_name = "batchAccounts"  
locations = [  
    resource_type.locations  
    for resource_type in provider.resource_types  
    if resource_type.resource_type == resource_type_name  
]  
  
for location in locations[0]:  
    print(location)  

このコマンドによって次の情報が返されます。

West Europe
East US
East US 2
West US
...

次のステップ