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

如何用Java检索层级结构中的管理组、订阅及资源信息

使用Azure Java SDK获取管理组层级及关联订阅、资源

核心依赖

确保项目引入Azure资源管理相关SDK依赖:

<dependency>
    <groupId>com.azure.resourcemanager</groupId>
    <artifactId>azure-resourcemanager-resources</artifactId>
    <version>最新稳定版</version>
</dependency>

递归遍历管理组层级

通过ManagementGroupsManager从根管理组开始递归遍历,同时获取关联订阅:

import com.azure.core.management.AzureEnvironment;
import com.azure.core.management.profile.AzureProfile;
import com.azure.resourcemanager.resources.ManagementGroupsManager;
import com.azure.resourcemanager.resources.models.ManagementGroup;

public class MgmtGroupExplorer {
    public static void main(String[] args) {
        AzureProfile profile = new AzureProfile(AzureEnvironment.AZURE);
        ManagementGroupsManager manager = ManagementGroupsManager.authenticate(/* 传入你的认证Credential对象 */, profile);
        
        // 从根管理组启动遍历
        traverseMgmtGroups(manager.rootManagementGroup().get(), 0);
    }

    private static void traverseMgmtGroups(ManagementGroup group, int depth) {
        String indent = "  ".repeat(depth);
        // 打印当前管理组信息
        System.out.printf("%s管理组ID: %s, 名称: %s%n", indent, group.id(), group.displayName());
        
        // 遍历子管理组
        for (ManagementGroup child : group.children().list()) {
            traverseMgmtGroups(child, depth + 1);
        }
        
        // 遍历当前管理组关联的订阅
        group.subscriptions().list().forEach(sub -> {
            System.out.printf("%s  关联订阅ID: %s, 名称: %s%n", indent, sub.subscriptionId(), sub.displayName());
            // 获取该订阅下的资源
            listSubscriptionResources(sub.subscriptionId());
        });
    }
}

获取订阅下的资源列表

用ResourceManager读取指定订阅的所有资源:

import com.azure.resourcemanager.resources.ResourceManager;

private static void listSubscriptionResources(String subscriptionId) {
    ResourceManager resourceManager = ResourceManager.authenticate(/* 传入你的认证Credential对象 */, 
        new AzureProfile(subscriptionId, null, AzureEnvironment.AZURE));
    
    resourceManager.resources().list().forEach(resource -> {
        System.out.printf("        资源ID: %s, 类型: %s, 名称: %s%n", resource.id(), resource.type(), resource.name());
    });
}

关键类说明

  • ManagementGroupsManager: 管理组操作的入口类,负责初始化客户端
  • ManagementGroup: 单个管理组实例,提供子组遍历、订阅关联查询方法
  • ResourceManager: 订阅级资源管理的核心类,用于查询资源信息
  • AzureProfile: 配置Azure环境、订阅上下文的基础类

注意:需提前配置Azure认证(如DefaultAzureCredential),并确保应用拥有Management Group Reader、Reader等对应权限。

内容的提问来源于stack exchange,提问作者mohamedjbelii

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 17:50:33