使用 JAVA API 获取我的 Azure 订阅中所有资源的详细信息

Posted

技术标签:

【中文标题】使用 JAVA API 获取我的 Azure 订阅中所有资源的详细信息【英文标题】:Get details of all resources in my Azure Subscription using JAVA API 【发布时间】:2016-12-30 08:00:32 【问题描述】:

我正在寻找类似于 this 但使用 JAVA REST API 调用的东西。 我想获取所有资源(包括虚拟机、存储磁盘、网络设备等)及其基本属性(如 IP 地址、磁盘空间等)的列表 我尝试在this link 之后进行 API 调用。

当我向这个 url 发出 http 请求时

"https://management.azure.com/subscriptions/"+subscriptionId+"/resourceGroups/"+resourceGroupName+"/providers/Microsoft.Compute/virtualMachines?api-version="+apiVersion

但我收到 401 错误。我在调用正确的 URL 吗?如果不是,我应该调用哪个 URL?

【问题讨论】:

【参考方案1】:

但我收到 401 错误。我在调用正确的 URL 吗?如果不 我应该调用哪个 URL?

您调用的是正确的 URL,但是您为 API 调用提供了不正确的参数。您提到的link 是用于拨打Azure Service Management API 电话,但是您需要做的是拨打Azure Resource Manager (ARM) API 电话。

与 Azure 服务管理 API 一样,ARM API 请求需要经过身份验证。如果是前者,则使用管理证书对请求进行身份验证。如果是后者,则需要使用通过针对 Azure AD 对用户进行身份验证而获得的令牌。

有关验证/授权 ARM API 请求的更多详细信息,请参阅此链接:https://azure.microsoft.com/en-us/documentation/articles/resource-manager-api-authentication/。

为了列出资源组中的所有资源,您绝对可以使用 ARM REST API。但是,现在您可以使用可以直接使用的 SDK。要了解有关这些 SDK 的更多信息,请参阅此链接:https://azure.microsoft.com/en-in/blog/azure-resource-manager-preview-sdks/。

【讨论】:

我已将 sdk 添加为 eclipse 中的新项目。在 Azure 门户中使用 AD 进行身份验证。现在,当我运行 ListVirtualMachineImages.java 时,我得到了 500 多个项目,但我只有一个虚拟机。我应该运行哪个文件来获取我的资产的详细信息? 我建议提出一个全新的问题。请包含您的代码和您看到的输出。 如果我使用上面提到的 url 进行 rest api 调用,我应该传递哪些参数? 你能告诉我如何创建令牌吗? 有人能告诉我如何创建令牌以从 Postman 或 java 代码传递吗?

以上是关于使用 JAVA API 获取我的 Azure 订阅中所有资源的详细信息的主要内容,如果未能解决你的问题,请参考以下文章

如何在CSP的Partner Center API上以编程方式创建Azure订阅?

如何在 Azure 角色中以编程方式获取订阅 ID?

Azure 资源管理器 API 用户的订阅范围授权

为用户创建订阅的 Azure API 管理 REST 调用(缺失)

Azure Resource Manager API用户的订阅范围授权

Azure API 管理订阅数据解析 json 失败