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
リソース プロバイダーの登録
すべてのリソース プロバイダー、およびサブスクリプションの登録状態を表示するには、以下を実行します。
Azure portal にサインインします。
Azure portal のメニューでサブスクリプションを検索します。 使用可能なオプションから、それを選択します。
表示するサブスクリプションを選択します。
左側のメニューの [設定] で、 [リソース プロバイダー] を選択します。
登録するリソース プロバイダーを検索します。
リソース プロバイダーを選択し、リソース プロバイダーの詳細を表示します。
リソース プロバイダーを選択し、[登録] を選択します。 サブスクリプションで最小限の特権を維持するには、使用する準備ができたリソース プロバイダーのみ登録します。
重要
前述のように、登録中状態にあるリソース プロバイダーのリソースの作成をブロックしないでください。 登録中の状態にあるリソース プロバイダーがブロックされないようにすることで、すべてのリージョンの完了まで待機するよりもはるかに早くアプリケーションを続行できます。
リソース プロバイダーを再登録して、前回の登録依頼追加されていた場所を使用します。
リソース プロバイダーの表示
特定のリソース プロバイダーの情報を表示するには、以下を実行します。
Azure portal にサインインします。
Azure portal のメニューで、[すべてのサービス] を選択します。
[すべてのサービス] ボックスで "リソース エクスプ ローラー (resource explorer)" と入力し、[リソース エクスプ ローラー] を選択します。
右矢印を選択して [プロバイダー] を展開します。
表示するリソース プロバイダーとリソースの種類を展開します。
リソース マネージャーはすべてのリージョンでサポートされていますが、デプロイするリソースはすべてのリージョンではサポートされていない場合があります。 また、サブスクリプションでの制限により、リソースをサポートする一部のリージョンを使用できない場合があります。 リソース エクスプローラーでは、リソースの種類の有効な場所が表示されます。
API バージョンは、リソース プロバイダーの REST API 操作のバージョンに対応しています。 リソース プロバイダーは、新しい機能を有効にすると、REST API の新しいバージョンをリリースします。 リソース エクスプローラーでは、リソースの種類の有効 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
...
次のステップ
- リソース マネージャーのテンプレートの作成の詳細については、 Azure リソース マネージャーのテンプレートの作成に関するページを参照してください。
- リソース プロバイダーのテンプレートのスキーマを表示するには、「テンプレート リファレンス」を参照してください。
- リソース プロバイダーを Azure サービスにマップされるリストについては、「Resource providers for Azure services」 (Azure サービスのリソースプロバイダー) を参照してください。
- リソース プロバイダーの操作を表示するには、「Azure REST API」を参照してください。