例: Azure ライブラリを使用してリソース グループとリソースを一覧表示する
この例では、Python スクリプトで Azure SDK の管理ライブラリを使用して、次の 2 つのタスクを実行する方法を示します。
- Azure サブスクリプションに含まれているすべてのリソース グループを一覧表示する。
- 特定のリソース グループ内のリソースを一覧表示する。
特に記載のない限り、この記事で使用されているコマンドはいずれも、Linux と macOS の bash および Windows のコマンド シェルで同じように動作します。
同等の Azure CLI コマンドは、この記事で一覧されています。
1: ローカルの開発環境を設定する
まだ行っていない場合は、このコードを実行できる環境を設定します。 次のことをお試しください。
venv
または任意のツールを使用して Python 仮想環境を構成します。 仮想環境は、ローカルまたは Azure Cloud Shell で作成し、そこでコードを実行できます。 仮想環境の使用を開始するには、必ず仮想環境をアクティブにします。Conda 環境を使用します。
Visual Studio Code または GitHub Codespaces で Dev コンテナを使用します。
2: Azure ライブラリ パッケージをインストールする
requirements.txt という名前のファイルを作成し、内容を次のようにします。
azure-mgmt-resource
azure-identity
仮想環境をアクティブ化し、ターミナルまたはコマンド プロンプトで要件をインストールします。
pip install -r requirements.txt
3: リソース グループを操作するコードを記述する
3a. サブスクリプション内のリソース グループを一覧表示する
次のコードを使用して、list_groups.py という名前の Python ファイルを作成します。 詳細はコメントで説明しています。
# Import the needed credential and management objects from the libraries.
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
import os
# Acquire a credential object.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)
# Retrieve the list of resource groups
group_list = resource_client.resource_groups.list()
# Show the groups in formatted output
column_width = 40
print("Resource Group".ljust(column_width) + "Location")
print("-" * (column_width * 2))
for group in list(group_list):
print(f"{group.name:<{column_width}}{group.location}")
3b. 特定のリソース グループ内のリソースを一覧表示する
次のコードを使用して、list_resources.py という名前の Python ファイルを作成します。 詳細はコメントで説明しています。
既定では、コードによって "myResourceGroup" のリソースが一覧表示されます。 別のリソース グループを使用するには、RESOURCE_GROUP_NAME
環境変数を目的のグループ名に設定します。
# Import the needed credential and management objects from the libraries.
from azure.identity import DefaultAzureCredential
from azure.mgmt.resource import ResourceManagementClient
import os
# Acquire a credential object.
credential = DefaultAzureCredential()
# Retrieve subscription ID from environment variable.
subscription_id = os.environ["AZURE_SUBSCRIPTION_ID"]
# Retrieve the resource group to use, defaulting to "myResourceGroup".
resource_group = os.getenv("RESOURCE_GROUP_NAME", "myResourceGroup")
# Obtain the management object for resources.
resource_client = ResourceManagementClient(credential, subscription_id)
# Retrieve the list of resources in "myResourceGroup" (change to any name desired).
# The expand argument includes additional properties in the output.
resource_list = resource_client.resources.list_by_resource_group(
resource_group, expand = "createdTime,changedTime")
# Show the groups in formatted output
column_width = 36
print("Resource".ljust(column_width) + "Type".ljust(column_width)
+ "Create date".ljust(column_width) + "Change date".ljust(column_width))
print("-" * (column_width * 4))
for resource in list(resource_list):
print(f"{resource.name:<{column_width}}{resource.type:<{column_width}}"
f"{str(resource.created_time):<{column_width}}{str(resource.changed_time):<{column_width}}")
コード内の認証
この記事の後半では、Azure CLI を使用して Azure にサインインしてサンプル コードを実行します。 アカウントに、Azure サブスクリプションでリソース グループを作成して一覧するアクセス許可がある場合、コードが正常に実行されます。
運用スクリプトでこのようなコードを使用するには、認証にサービス プリンシパル ベースの方法を使用するように環境変数を設定します。 詳細については、「Azure サービスで Python アプリを認証する方法」を参照してください。 サブスクリプションの Contributor ロールなど、Azure の適切なロールを割り当てて、サブスクリプションでリソース グループを作成および一覧するための十分なアクセス許可がサービス プリンシパルにあることを確認します。
コードで使用されているクラスの参照リンク
4: スクリプトの実行
実行していない場合、Azure CLI を使用して Azure にサインインします。
az login
AZURE_SUBSCRIPTION_ID
環境変数を、サブスクリプション ID に設定します。 (az account show コマンドを実行すると、出力のid
プロパティからお使いのサブスクリプション ID を取得できます。)サブスクリプションに含まれているすべてのリソース グループを一覧表示します。
python list_groups.py
特定のリソース グループ内のすべてのリソースを一覧表示します。
python list_resources.py
既定では、コードによって "myResourceGroup" のリソースが一覧表示されます。 別のリソース グループを使用するには、
RESOURCE_GROUP_NAME
環境変数を目的のグループ名に設定します。
参考: 同等の Azure CLI コマンド
次の Azure CLI コマンドは、サブスクリプションでリソース グループを一覧します。
az group list
次のコマンドは、centralus リージョンの「myResourceGroup」に属するリソースを一覧します (特定のデータ センターを識別するには、location
引数は必須です)。
az resource list --resource-group myResourceGroup --location centralus