Как я могу получить инструментальный ключ для Application Insight (который находится в другой группе ресурсов) в шаблоне ARM? - PullRequest
1 голос
/ 03 марта 2020

Есть ли способ получить инструментальный ключ для Application Insights (который находится в другой группе ресурсов) в шаблоне ARM?

Я уже создал appInsights, используя шаблон ARM, используя приведенный ниже код

{
  "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "AppInsightsName": { "type": "string" },
    "Location": { "type": "string", "defaultValue": "westeurope" }
  },
  "variables": {
    //"apiVersion": "2018-02-01-preview",
    "apiVersion": "2016-08-01",
    "location": "[parameters('Location')]",
    "ApplicationInsightsName": "[parameters('AppInsightsName')]"
  },
  "resources": [
    {
      "apiVersion": "2014-04-01",
      "type": "Microsoft.Insights/components",
      "name": "[variables('ApplicationInsightsName')]",
      "location": "[variables('location')]",
      "kind": "other",
      "properties": {
        "applicationId": "[variables('ApplicationInsightsName')]"
      }
    }
  ]
}

Теперь я пытаюсь связать функциональное приложение azure, которое работает в другой группе ресурсов, с этим appInsights.

Ниже приведен код, который я пробовал,

{
  "name": "APPINSIGHTS_INSTRUMENTATIONKEY",
  "value": "[reference(resourceId(variables('AppInsightsResourceGroup'),'Microsoft.Insights/components', variables('ApplicationInsightsName'))).InstrumentationKey]"
}

Но я получаю приведенную ниже ошибку,

enter image description here

Может кто-нибудь дать некоторую идею, как взломать это?

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Вы можете использовать справочную функцию для ресурсов, которые уже развернуты из другого шаблона. Вам просто нужно передать параметр apiVersion, как указано в документации на https://docs.microsoft.com/en-us/azure/azure-resource-manager/templates/template-functions-resource#reference. Обратите внимание, что вам также нужно изменить свойство, на которое вы ссылаетесь, с «.InstrumentationKey» на «.properties.InstrumentationKey».

"value": "[reference(resourceId(variables('AppInsightsResourceGroup'),'Microsoft.Insights/components', variables('ApplicationInsightsName')), '2015-05-01', 'Full').properties.InstrumentationKey]"

Вы можете развернуть следующий шаблон для проверки (просто замените две переменные на ваши ценности):

{
  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
  },
  "variables": {
      "AppInsightsResourceGroup": "myAIRG",
      "ApplicationInsightsName": "myAI"
  },
  "resources": [
  ],
  "outputs": {
      "appInsightsKey": {
          "type": "string",
          "value": "[reference(resourceId(variables('AppInsightsResourceGroup'),'Microsoft.Insights/components', variables('ApplicationInsightsName')), '2015-05-01', 'Full').properties.InstrumentationKey]"
      }
  }
}
0 голосов
/ 03 марта 2020

Как вы уже поняли, вы не можете использовать справочную функцию для ресурсов, которые вы развернули в другом шаблоне. См. Также: Ссылка действительного использования

Вы можете либо написать один шаблон ARM, который развертывает ваше Application Insight и ваше Azure функциональное приложение, либо разделить развертывания использование связанного шаблона : См. также: Использование связанных и вложенных шаблонов при развертывании Azure ресурсов

Другим вариантом может быть вывод InstrumentationKey в вашем первом развертывании и сохраните его где-нибудь, где вы сможете получить его в своем развертывании приложения функций (например, Azure KeyVault или Azure DevOps Variable) ....

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...