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