除非另行说明,否则本文中的所有资源在 Linux/macOS bash 和 Windows 命令行界面上的工作方式相同。
本文稍后部分提供了
等效的 Azure CLI 命令
。
1:设置本地开发环境
如果尚未设置,请按照
为 Azure 配置本地 Python 开发环境
中的所有说明进行操作。
请务必为该项目创建一个虚拟环境并将其激活。
2:安装 Azure 库包
创建一个具有以下内容的名为
requirements.txt
的文件:
azure-mgmt-resource>=18.0.0
azure-identity>=1.5.0
请务必使用这些版本的库。 使用较旧的版本会导致错误,例如“'AzureCliCredential' 对象没有特性 'signed_session'”。
在激活了虚拟环境的终端或命令提示符下,安装下列要求:
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 AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
import os
# Acquire a credential object using CLI-based authentication.
credential = AzureCliCredential()
# 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 AzureCliCredential
from azure.mgmt.resource import ResourceManagementClient
import os
# Acquire a credential object using CLI-based authentication.
credential = AzureCliCredential()
# 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}}")
代码中的身份验证
此代码使用基于 CLI 的身份验证方法(使用 AzureCliCredential
),因为它演示了你可能会使用 Azure CLI 直接执行的操作。 在这两种情况下,你使用相同的标识进行身份验证。 根据所用的环境,你可能需要先运行 az login
来进行身份验证。
若要在生产脚本中使用此类代码 (例如,若要自动执行 VM 管理) ,请使用 DefaultAzureCredential
(建议) 或基于服务主体的方法,如 如何使用 Azure 服务对 Python 应用进行身份验证中所述。
代码中使用的类的参考链接
AzureCliCredential (azure.identity)
ResourceManagementClient (azure.mgmt.resource)
4:运行脚本
列出订阅中的所有资源组:
python list_groups.py
列出资源组中的所有资源:
python list_resources.py
有关参考:等效 Azure CLI 命令
以下 Azure CLI 命令使用 JSON 输出来列出订阅中的资源组:
az group list
以下命令列出 centralus 区域中“myResourceGroup”内的资源(必须使用位置参数来标识特定数据中心):
az resource list --resource-group myResourceGroup --location centralus
示例:预配资源组
示例:预配 Azure 存储
示例:使用 Azure 存储
示例:预配 Web 应用并部署代码
示例:预配和查询数据库
示例:预配虚拟机
将 Azure 托管磁盘与虚拟机一起使用
完成有关 Azure SDK for Python 的简短调查