Программный метод идентификации доступных аналитических журналов Azure Log - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь создать шаблон ARM для развертывания рабочей области Azure Log Analytics через ARM.Шаблон работает нормально, за исключением того, что ему необходимо понять, какие SKU действительны для целевой подписки - PerGB2018 для новых подписок или один из старых SKU для немигрированных подписок.

Модели цен подробно описаны здесь: https://docs.microsoft.com/en-gb/azure/monitoring-and-diagnostics/monitoring-usage-and-estimated-costs#new-pricing-model-and-operations-management-suite-subscription-entitlements

Здесь перечислены доступные SKU для создания рабочего пространства: https://docs.microsoft.com/en-us/rest/api/loganalytics/workspaces/createorupdate

Я не знаю, как определить, какие из нихдействителен для конкретной подписки перед развертыванием и приведет к ошибкам и неудачным развертываниям, где выбранное по умолчанию недопустимо.Я не могу предположить, что человек или система, вызывающая шаблон, поймут и получат доступ к правильному набору SKU.PerGB2018 нельзя использовать в немигрированных подписках, поэтому я не могу использовать его по умолчанию.

Может ли кто-нибудь поделиться методом определения того, какие SKU будут работать ПЕРЕД попыткой развертывания и, таким образом, избежать ошибки?Я проверил API монитора и биллинга на случай, если он там указан, но ничего не вижу, а сетевые вызовы со страницы портала не дают особого понимания: (

Я предпочитаю избегать PowerShell, как и все остальные.развертывания использует BASH для запроса информации о развертывании и создания файлов параметров.

Спасибо

1 Ответ

0 голосов
/ 31 мая 2018

Неизбежно, после того, как задан вопрос, произошел прорыв - приведенный ниже скрипт BASH использует Azure CLI 2 для получения токена доступа AAD и сохранения его в token.Затем мы берем идентификатор подписки и сохраняем его в subscriptionId.

Когда у нас есть дополнительный идентификатор и действительный токен доступа, мы используем curl для вызова конечной точки API, которая перечисляет дату перехода на новую модель ценообразования..

token=$(az account get-access-token | jq ".accessToken" -r) subscriptionId=$(az account show | jq ".id" -ropt) optedIn=$(curl -X POST -H "Authorization:Bearer $token" -H "Content-Length:0" https://management.azure.com/subscriptions/$subscriptionId/providers/microsoft.insights/listmigrationdate?api-version=2017-10-01 | jq ".optedInDate" -r)

Насколько я понимаю, значение "null" для optedIn означает, что это устаревшие цены SKU.

Кричите, если вы не согласны или имеетелучший ответ!

...