wget azure REST 时授权失败 API

Authorization failed while wget azure REST API

我正在尝试使用 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.

我的 subscription/Authorization 怎么了?!!

在此先感谢您的帮助!我卡住了!!

通过指定选项 --user--ask-password wget 将要求提供凭据。下面是一个例子。根据您的需要更改用户名和 link

wget --user=username --ask-password https://YOUR_URL

您需要在调用中包含 Authorization header 和 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,因为你 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);
  });