Возможно ли получить имя рабочей области OMS Log Analytics из идентификатора рабочей области

#azure #azure-resource-manager #azure-log-analytics #azure-template #azure-oms

#azure #azure-resource-manager #azure-log-analytics #azure-rm-template #azure-oms

Вопрос:

У меня есть существующее рабочее пространство OMS Log Analytics. Идентификатор рабочей области — это guid. Это единственное, что я могу использовать из-за существующего проекта. Используя этот идентификатор guid, мне нужно получить пример имени рабочей области «myWorkspace» в шаблоне arm. Мне разрешено передавать guid в качестве параметра в шаблон arm. Guid на самом деле является свойством CustomerID, если я посмотрю в сопоставлениях Json и resourceId на имя рабочей области, которое начинается с /subscription /xx-xxx-xxx-xxx/……../ myWorkspace.

Мне нужно получить имя этой рабочей области (resourceId) из guid (CustomerID). Пожалуйста, дайте мне знать, могу ли я это сделать или нет? Действительно изо всех сил пытаюсь заставить это работать…

Комментарии:

1. вы хотите получить имя рабочей области с помощью программирования, например, с помощью c #?

2. Не использовать только шаблон ARM @Ivan Yang

3. @chugh97 — Не могли бы вы, пожалуйста, помочь лучше объяснить ваш сценарий, почему вы хотите получить имя рабочей области с помощью шаблона ARM на основе идентификатора рабочей области? и что ограничивает вас в получении имени рабочего пространства на основе workspaceId через powershell или другими способами перед вызовом шаблона ARM? насколько мне известно, в REST API нет параметра для извлечения с использованием идентификатора рабочей области learn.microsoft.com/en-us/rest/api/loganalytics/workspaces/get , у него есть только workspacename

Ответ №1:

Я не уверен, чего вы хотите достичь, но я несколько раз использовал рабочую область Log Analytics с azure ARM. Примером является получение ключа рабочей области и идентификатора рабочей области для подключения виртуальной машины к рабочей области.

Смотрите приведенный ниже код:

   {
        "type": "Microsoft.Compute/virtualMachines/extensions",
        "name": "[concat(parameters('vmName'), '/OMSExtension')]",
        "apiVersion": "2018-06-01",
        "location": "[parameters('location')]",
        "dependsOn": [
            "[concat('Microsoft.Compute/virtualMachines/', parameters('vmName') )]"
        ],
        "properties": {
            "publisher": "Microsoft.EnterpriseCloud.Monitoring",
            "type": "OmsAgentForLinux",
            "typeHandlerVersion": "1.7",
            "autoUpgradeMinorVersion": true,
            "settings": {
                "workspaceId": "[reference(resourceId(parameters('logAnalyticsRG'), 'Microsoft.OperationalInsights/workspaces/', parameters('logAnalyticsName')), '2015-03-20').customerId]"
            },
            "protectedSettings": {
                "workspaceKey": "[listKeys(resourceId(parameters('logAnalyticsRG'), 'Microsoft.OperationalInsights/workspaces/', parameters('logAnalyticsName')), '2015-03-20').primarySharedKey]"
            }
        }
    }
  

Все зависит от вашего сценария, но это способ получения идентификатора рабочей области и ключа.

Ответ №2:

Вы можете получить его из ARG (Azure resource graph) довольно легко, но я не знаю способа найти его В самом шаблоне ARM. вероятно, вам придется искать идентификатор вне шаблона и передавать его в качестве параметра?

https://learn.microsoft.com/en-us/azure/governance/resource-graph/concepts/explore-resources

 Resources 
| where type =~ "microsoft.operationalinsights/workspaces"
| where properties.customerId == "00000000-0000-0000-0000-00000000000"
| project id, name