Share via


例: Azure ライブラリを使用してリソース グループとリソースを一覧表示する

この例では、Python スクリプトで Azure SDK の管理ライブラリを使用して、次の 2 つのタスクを実行する方法を示します。

  • Azure サブスクリプションに含まれているすべてのリソース グループを一覧表示する。
  • 特定のリソース グループ内のリソースを一覧表示する。

特に記載のない限り、この記事で使用されているコマンドはいずれも、Linux と macOS の bash および Windows のコマンド シェルで同じように動作します。

同等の Azure CLI コマンドは、この記事で一覧されています。

1: ローカルの開発環境を設定する

まだ行っていない場合は、このコードを実行できる環境を設定します。 次のことをお試しください。

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: スクリプトの実行

  1. 実行していない場合、Azure CLI を使用して Azure にサインインします。

    az login
    
  2. AZURE_SUBSCRIPTION_ID 環境変数を、サブスクリプション ID に設定します。 (az account show コマンドを実行すると、出力の id プロパティからお使いのサブスクリプション ID を取得できます。)

    set AZURE_SUBSCRIPTION_ID=00000000-0000-0000-0000-000000000000
    
  3. サブスクリプションに含まれているすべてのリソース グループを一覧表示します。

    python list_groups.py
    
  4. 特定のリソース グループ内のすべてのリソースを一覧表示します。

    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

関連項目