用于识别Azure Log Analytics可用SKU的编程方法

时间:2018-05-31 16:06:34

标签: azure azure-resource-manager azure-log-analytics

我正在尝试创建一个ARM模板,以通过ARM部署Azure Log Analytics工作区。模板工作正常,但需要了解哪些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

我不知道在部署之前如何识别哪些对于特定订阅有效,并且最终导致错误以及默认I选择无效的部署失败。我不能假设调用模板的人或系统会理解并且可以访问正确的定价SKU集。 PerGB2018不能用于非迁移订阅,因此不能作为我的默认订阅。

在尝试部署之前,任何人都可以共享一种方法来确定哪些SKU可以正常工作,从而避免出现错误吗?我已经检查了Monitor和Billing API,以防它在那里列出但看不到任何内容,并且来自门户页面的网络调用没有提供太多的见解:(

我的首选是避免使用PowerShell,因为部署的其余部分使用BASH来请求部署信息并构建参数文件。

谢谢

1 个答案:

答案 0 :(得分:0)

不可避免地,在提出问题后有一个突破 - 下面的BASH脚本使用Azure CLI 2获取AAD访问令牌并将其存储在token中。接下来,我们获取订阅ID并将其存储在subscriptionId

我们拥有子ID和有效的访问令牌后,我们使用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)

我的理解是optedIn的值为“null”表示它是传统的定价SKU。

如果您不同意或有更好的答案,请大声喊叫!