如何用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
相关产品推荐
相关产品推荐

