You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

需求:用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:提供资源组和部署的核心管理API
  • azure-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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.13 07:41:11