この例では、Python スクリプトで Azure SDK 管理ライブラリを使用して 2 つのタスクを実行する方法を示します。
- Azure サブスクリプション内のすべてのリソース グループを一覧表示します。
- 特定のリソース グループ内のリソースを一覧表示します。
この記事のすべてのコマンドは、特に明記されていない限り、Linux/macOS bash と Windows コマンド シェルで同じように動作します。
同等の Azure CLI コマンドについては、この記事の後半で説明します。
1: ローカル開発環境を設定する
まだ実行していない場合は、このコードを実行できる環境を設定します。 いくつかのオプションを次に示します。
-
venv
または任意のツールを使用して Python 仮想環境を構成します。 仮想環境の使用を開始するには、必ずアクティブ化してください。 Python をインストールするには、「 Python のインストール」を参照してください。
#!/bin/bash
# Create a virtual environment
python -m venv .venv
# Activate the virtual environment
source .venv/Scripts/activate # only required for Windows (Git Bash)
conda 環境を使用します。 Conda をインストールするには、「 Miniconda のインストール」を参照してください。
Visual Studio Code または GitHub Codespaces で開発コンテナーを使用します。
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 アプリを認証する方法に関するページを参照してください。 サービス プリンシパルに 、Azure で適切なロールを割り当てることで、サブスクリプション内のリソース グループを作成して一覧表示するための十分なアクセス許可があることを確認する必要があります。たとえば、サブスクリプションの 共同作成者 ロールなどです。
コードで使用されるクラスの参照リンク
4: スクリプトを実行する
まだサインインしていない場合は、Azure CLI を使用して Azure にサインインします。
az login
AZURE_SUBSCRIPTION_ID
環境変数をサブスクリプション ID に設定します。 ( az account show コマンドを実行し、出力のid
プロパティからサブスクリプション ID を取得できます)。export AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
サブスクリプション内のすべてのリソース グループを一覧表示します。
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