1

我正在尝试使用 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- 是我的订阅号。

我收到以下错误消息。

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.

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

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

4

2 回答 2

1

您需要在调用中包含Authorization带有Bearer令牌的标头:

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

看看armclient,因为您真的不想手动(或通过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);
  });
于 2016-11-13T11:33:24.020 回答
0

通过指定选项--user--ask-passwordwget 将要求提供凭据。下面是一个例子。更改用户名并链接到您的需求

wget --user=username --ask-password https://YOUR_URL
于 2016-11-13T10:50:52.807 回答