azure App Insights连接字符串参考,给予ERROR BCP178,带有for循环

uqdfh47h  于 2023-02-19  发布在  其他
关注(0)|答案(1)|浏览(82)

我的二头肌可以在for loop中创建应用程序。

var App = {
(...)
}

module app 'app:latest' = [for i in range(0, length(App.appServices)): {
  name: 'app${i}'
  params: {
    (...)
  }
}]

我想把它和应用洞察联系起来,我发现我可以使用引用来解析APPLICATIONINSIGHTS_CONNECTION_STRING:

siteConfig: {
    linuxFxVersion: 'NODE|14-lts'
    appSettings: [
      {
        name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
        value: reference(resourceId(resourceGroup().name,'Microsoft.insights/components/', 'app1'), '2020-02-02').ConnectionString
      }

不幸的是这个抛出错误:

Error BCP178: This expression is being used in the for-expression, which requires a value that can be calculated at the start of the deployment. You are referencing a variable which cannot be calculated at the start ("App" -> "applicationinsights_connection_string" -> "reference").
INFO: Command ran in 17.855 seconds (init: 0.252, invoke: 17.602)

我如何让它工作?我如何强制二头肌首先解决它?有没有其他方法将用for循环创建的应用程序与应用程序洞察联系起来?
上面的P.S代码在没有for循环的情况下可以正常工作。

xu3bshqb

xu3bshqb1#

错误BCP 178:此表达式用于for-expression,它需要一个可以在部署开始时计算的值。
此错误意味着必须在循环开始前给定引用值。因此,请在循环外生成连接字符串数组,然后在循环内引用该数组。
在模块声明外使用for循环创建一个连接字符串数组,然后在创建app模块的循环内引用该数组,并将相应的连接字符串赋给params. appInsightsConnectionString属性。

var appInsightsConnections = [ for i in range(0, length(app1.appServices)): ```
reference(resourceId(resourceGroup().name,'Microsoft.insights/components/', 'app1'), '2020-02-02').ConnectionString]
  • 添加到你的二头肌代码:*
params: { 
  (...) 
appInsightsConnectionString: appInsightsConnections[i] 
}

我进行了上述更改,运行了取自MSDoc的示例模板,并成功地部署了它。

Refer此模板用于将应用服务与应用洞察相连接。

相关问题