需求:用Python类实现Azure Get-AzureRmResourceGroupDeployment同款功能
我帮你搞定这个需求!要实现和Get-AzureRmResourceGroupDeployment同款功能的Python类,我们可以用Azure官方的Python SDK——azure-mgmt-resource,它专门用于管理Azure资源组和部署。下面是完整的实现方案:
1. 先安装依赖包
首先得安装Azure资源管理的SDK包,以及用于身份认证的工具包:
pip install azure-mgmt-resource azure-identity
azure-mgmt-resource:提供资源组和部署的核心管理APIazure-identity:提供现代的认证方式(支持Azure CLI登录、Visual Studio、服务主体等多种场景,不用手动管理密钥)
2. 完整Python类实现
这个类会封装认证、部署列表获取、字段映射的逻辑,完全对齐PowerShell命令的输出格式:
from azure.mgmt.resource import ResourceManagementClient from azure.identity import DefaultAzureCredential class AzureDeploymentFetcher: def __init__(self, subscription_id: str, resource_group_name: str): """ 初始化部署获取器 :param subscription_id: Azure订阅ID :param resource_group_name: 目标资源组名称 """ self.subscription_id = subscription_id self.resource_group_name = resource_group_name # 使用默认凭据认证(本地开发时,az login登录后即可自动生效) credential = DefaultAzureCredential() self.resource_client = ResourceManagementClient(credential, subscription_id) def get_resource_group_deployments(self): """ 获取资源组内所有部署的详情,返回和PowerShell对齐的字段结构 """ deployments = [] try: # 调用Azure API获取资源组下的所有部署 deployment_list = self.resource_client.deployments.list_by_resource_group(self.resource_group_name) for deployment in deployment_list: # 严格映射PowerShell输出的字段 deployments.append({ "DeploymentName": deployment.name, "ResourceGroupName": self.resource_group_name, "ProvisioningState": deployment.properties.provisioning_state, "Timestamp": deployment.properties.timestamp.strftime("%d-%m-%Y %H:%M:%S"), "Mode": deployment.properties.mode.value }) return deployments except Exception as e: raise Exception(f"获取部署列表失败: {str(e)}") def print_deployments(self): """ 模仿PowerShell的格式打印部署信息 """ deployments = self.get_resource_group_deployments() for idx, dep in enumerate(deployments, 1): print(f"--- 部署 {idx} ---") for key, value in dep.items(): print(f"{key} : {value}") print() # 示例用法 if __name__ == "__main__": # 替换成你的订阅ID和目标资源组名 SUBSCRIPTION_ID = "your-subscription-id" RESOURCE_GROUP = "RGDemo" try: fetcher = AzureDeploymentFetcher(SUBSCRIPTION_ID, RESOURCE_GROUP) fetcher.print_deployments() except Exception as e: print(f"错误: {e}")
3. 代码说明
- 认证逻辑:
DefaultAzureCredential是Azure官方推荐的认证方式,本地开发时只要你用az login登录过Azure CLI,就能自动获取凭据,无需手动配置密钥。 - 核心API调用:
resource_client.deployments.list_by_resource_group()就是PowerShell命令背后调用的底层API,会返回资源组内所有部署的完整元数据。 - 字段映射:完全对应PowerShell的输出字段:
DeploymentName→ 部署的name属性ProvisioningState→properties.provisioning_state(部署状态)Timestamp→ 将UTC时间转换为dd-mm-yyyy HH:MM:SS格式,和PowerShell输出一致Mode→properties.mode.value(对应Incremental/Complete部署模式)
4. 运行效果
运行后会输出和你提供的PowerShell示例几乎一致的结果:
--- 部署 1 --- DeploymentName : Microsoft.VirtualNetwork-20190517162503 ResourceGroupName : RGDemo ProvisioningState : Succeeded Timestamp : 17-05-2019 10:55:36 Mode : Incremental
注意事项
- 确保你的Azure账号拥有Resource Group Contributor及以上权限,才能读取部署信息。
- 生产环境使用时,推荐通过环境变量配置服务主体信息,
DefaultAzureCredential会自动识别并加载。
内容的提问来源于stack exchange,提问作者siri72
相关产品推荐
相关产品推荐

