在Azure资源组模板中能否获取Application Insights的连接字符串?
Azure ARM模板获取Application Insights connectionString的解决方案
可以在Azure资源组模板中正常获取Application Insights的connectionString,你遇到的问题分为变量定义错误、API版本不兼容两层,解决方法如下:
1. 解决当前报错
当前报错的直接原因是模板未正确定义名为myAppInsightsInstanceName的变量,按以下要求排查:
- 确认模板顶层
variables节点中存在该变量的定义,拼写、大小写完全匹配(ARM模板变量大小写敏感) - 如果使用嵌套模板,确认该变量已经从父模板正确传递到子模板作用域
2. 正确获取connectionString的写法
你使用的2014-04-01版本的Application Insights API不支持返回connectionString属性,该属性仅在2020-02-02及更高版本的API中提供,替换为以下写法即可:
"outputs": { "MyAppInsightsConnectionString": { "value": "[reference(resourceId('Microsoft.Insights/components', variables('myAppInsightsInstanceName')), '2020-02-02').ConnectionString]", "type": "string" } }
如果需要用listKeys方法实现,写法如下:
"value": "[listKeys(resourceId('Microsoft.Insights/components', variables('myAppInsightsInstanceName')), '2020-02-02').ConnectionString]"
额外注意事项
- 如果Application Insights实例与当前模板不在同一资源组,需要在resourceId函数中补充订阅ID、资源组参数:
resourceId('<目标订阅ID>', '<目标资源组名>', 'Microsoft.Insights/components', '<实例名>') - 确保执行部署的账号对目标Application Insights实例有至少读取权限
内容的提问来源于stack exchange,提问作者Priyanka Singh
相关产品推荐
相关产品推荐

