Я хотел бы создать информационную панель с графиками стоимости моих ресурсов Azure (как можно более подробно).Это значит, что списка ежемесячных счетов недостаточно (но я бы уже был очень рад, если бы смог этого добиться!)
В любом случае, первое, что я заметил, это то, что если вы найдете пример, URL-адреса конечной точкивыглядит вот так
https://management.azure.com/subscriptions/${subscriptionId}/resourcegroups?api-version=2016-09-01
Проверьте конец URL 2016-09-01
, выглядит не очень up2date. Этот средний пост был лучшей статьей, которую я мог найти, но он также использует эти URL.Кроме того, я не смог выполнить описанные шаги, во-первых, он использует почтальон для получения access_token
(не очень полезно для меня, потому что мне это нужно автоматизировать), а во-вторых, где-то посередине извлекается access_token, но никогда не используется.
Итак, я обнаружил npm-пакеты, такие как [azure-arm-billing][2]
, из которых мне удалось написать следующую программу (в основном, copy-paste):
const msRestAzure = require('ms-rest-azure');
const BillingManagement = require('azure-arm-billing')
const clientId = process.env['CLIENT_ID'];
const secret = process.env['APPLICATION_SECRET'];
const domain = process.env['DOMAIN'];
const subscriptionId = process.env['AZURE_SUBSCRIPTION_ID'];
// Retrieve access_token
const app = new msRestAzure.ApplicationTokenCredentials(clientId, domain, secret);
app.getToken((err, token) => {
console.log(token.accessToken);
});
// =======
msRestAzure
.interactiveLogin( { domain }) // The argument here is nowhere documented
.then(credentials => {
console.log(credentials);
let client = new BillingManagement(credentials, subscriptionId);
return client.invoices.list();
})
.then(invoices => {
console.log('List of invoices:');
console.dir(invoices, { depth: null, colors: true });
});
При запуске это показывает хороший access_token и счета
...
List of invoices:
[
{
id: '/subscriptions/../providers/Microsoft.Billing/invoices/....',
name: '...',
type: 'Microsoft.Billing/invoices',
invoicePeriodStartDate: 2019-08-25T00:00:00.000Z,
invoicePeriodEndDate: 2019-09-24T00:00:00.000Z,
billingPeriodIds: [
'/subscriptions/.../pr..s/Micro..ing/bill..ods/201910-1'
]
},
{
id: '/subscriptions/9ea...3d/providers/Microsoft.Billing/invoices/201909-...',
name: '....',
type: 'Microsoft.Billing/invoices',
invoicePeriodStartDate: 2019-07-25T00:00:00.000Z,
invoicePeriodEndDate: 2019-08-24T00:00:00.000Z,
billingPeriodIds: [
'/subscriptions/..../providers/Microsoft.Billing/billingPeriods/201909-1...'
]
}
]
Несмотря на то, что у меня есть мои счета, номеров нет.И я хотел бы получить стоимость для каждого ресурса.
Таким образом, документация, кажется, устарела до того, что не существует для того, что я хочу (как кажется).У меня вопрос: смог ли кто-нибудь получить такую информацию?Я действительно хотел бы знать, как !!