示例:使用 Azure 库列出资源组和资源
此示例演示如何在 Python 脚本中使用 Azure SDK 管理库来执行下面两项任务:
- 列出 Azure 订阅中的所有资源组。
- 列出特定资源组中的资源。
除非另行说明,否则本文中的所有资源在 Linux/macOS bash 和 Windows 命令行界面上的工作方式相同。
本文稍后将列出等效的 Azure CLI 命令。
1:设置本地开发环境
如果尚未设置,则请设置一个可在其中运行此代码的环境。 提供以下选择:
使用
venv
或所选工具来配置 Python 虚拟环境。 可在本地或 Azure Cloud Shell 中创建虚拟环境,然后在其中运行代码。 请务必激活此虚拟环境以开始使用。使用 Conda 环境。
在 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):列出订阅中的所有资源组:
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