java - wget azure REST API 时授权失败

标签 java azure azure-vm-scale-set azure-monitoring

我正在尝试使用 REST API 收集 azure 指标。我有一个免费订阅的 Azure 帐户。

我正在使用以下 wget 来获取 json 消息。

wget https://management.azure.com/subscriptions/XXXXXXX/resourceGroups/RG_SOUTH_INDIA/providers/Microsoft.Compute/virtualMachineScaleSets/linuxscal/metrics?api-version=2014-04-01

XXXXXXX-是我的订阅 ID。

我收到以下错误消息。

Resolving management.azure.com... 13.67.231.219
Connecting to management.azure.com|13.67.231.219|:443... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authorization failed.

我的订阅/授权有什么问题吗?!!

提前感谢您的帮助!卡住了!!

最佳答案

您需要在调用中包含带有 Bearer token 的 Authorization header :

GET /subscriptions?api-version=2015-01-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json

看看armclient,因为你really don't want to do all this手动(或通过curl): https://www.npmjs.com/package/armclient

// ES6
import ArmClient, { clientCredentials } from 'armclient';

const client = ArmClient({ 
  subscriptionId: '111111-2222-3333333',
  auth: clientCredentials({
    tenantId: '444444-555555-666666666',
    clientId: '777777-888888-999999999',
    clientSecret: 'aaaabbbbbccccc' // or servicePrincipalPassword
  })
});

您的 /metrics 调用变为:

client.get('/resourceGroups/RG_SOUTH_INDIA/providers/Microsoft.Compute/virtualMachineScaleSets/linuxscal/metrics', { 'api-version': '2014-04-01' })
  .then((res) => {
    console.log(res.body);
    console.log(res.headers);
  })
  .catch((err) => {
    console.log(err);
  });

关于java - wget azure REST API 时授权失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40572816/

相关文章:

进程之间的 Java I/O : how a external process read data from main process?

java - GSON解析多个相同类型的key

java - 处理服务器上的Excel文件

azure - 您可以删除 Microsoft.Web/certificates 吗?

Azure Active Directory 单租户单独的 webapi 应用程序访问

azure - 如何更改现有 Service Fabric 群集上的操作系统?

azure - VM 规模集未扩展

java - 在 HQL 上使用 select 进行内部连接

从工作簿固定时,Azure 仪表板不会使用新的时间范围进行更新

terraform - 如何通过 terraform 检索 Azure 规模集的 VM 专用 IP 地址?