使用Azure Java SDK按名称获取策略定义遇404:正确名称要求及获取方案
Azure Policy Java SDK 获取内置策略时的404问题
Azure Policy 内置了大量预置策略规则,可通过 Azure Java SDK 对接 Azure Resource Manager 完成资源访问,SDK 提供了 getByName() 方法用于按名称获取特定策略的定义,基础示例代码如下:
AzureResourceManager azureResourceManager = AzureResourceManager .authenticate(credential, profile) .withSubscription("<my-subscription-id>"); PolicyDefinition policyDefinition = azureResourceManager.policyDefinitions().getByName("<name>");
在测试上述代码的过程中,登录 Azure 控制台查找目标内置策略的可用名称时,发现控制台界面存在两类不同的策略标识:
- 策略列表页面向用户展示的友好显示名称,例如「Audit VMs that do not use managed disks」
- 策略定义详情页中展示的全局唯一资源标识,例如
06a78e20-9358-41c9-923c-fb736d382a4d
但将以上两类标识分别作为参数传入 getByName() 方法时,均会返回404资源不存在的错误,错误提示分别为:
Status code 404, The policy definition 'Audit VMs that do not use managed disks' could not be found.
Status code 404, The policy definition '06a78e20-9358-41c9-923c-fb736d382a4d' could not be found
目前存在两个待解决的疑问:
getByName()方法要求传入的参数到底对应哪类标识?- 针对 Azure 内置策略定义,是否存在更适配的SDK调用方式完成资源获取?
内容的提问来源于stack exchange,提问作者james.garriss
相关产品推荐
相关产品推荐

