我正在尝试使用 Bicep 设置 API 级别诊断以获取应用程序见解。 这相当于进入门户,选择 API 和设置,然后启用应用程序洞察并选择记录器等。
目前我有以下内容:
resource diagnostic 'Microsoft.ApiManagement/service/apis/diagnostics@2023-09-01-preview' = {
name: 'applicationinsights'
parent: myapi
properties: {
alwaysLog: 'allErrors'
loggerId: apimLogger.id
...
然后是许多变体,例如:
名称:'${myapi.name}/applicationinsights'(删除父标签)
名称:'appinsights'
我尝试的任何方法似乎都不起作用,并且我总是在名称字段上收到以下错误:
无法处理第“1”行和“1474”列处的资源“/subscriptions/mysubsciption/resourceGroups/myresourcegroup/providers/Microsoft.ApiManagement/service/myapim/apis/myapi/diagnostics/applicationinsights”的模板语言表达式。 “语言表达式属性数组索引‘1’超出范围。”
我花了很长时间谷歌搜索。 看起来名称应该是“applicationinsights”或“azuremonitor”之一(类似于在门户中启用时的选项),我已经尝试过,但似乎没有任何效果。
任何帮助表示赞赏!
无法处理第“1”行和“1474”列处的资源 xxxx 的模板语言表达式。 “语言表达式属性数组索引‘1’超出范围。”
正如我在评论中已经提到的,该问题可能是由于它所引用的
name or a parent
资源的结构格式不合适造成的。
为了在诊断提供程序下提供
name
字段,它必须是 applicationinsights
或 azuremonitor
。并确保 Api 资源符号名称已正确指定给同一资源下的 parent
字段。
name: `applicationinsights`
or
name: `azuremonitor`
参考我的SO更清楚地部署记录器和诊断Api服务资源。
param apimService string = 'newapimjah'
param apiname string = 'apinewjah'
resource apiManagement 'Microsoft.ApiManagement/service@2020-12-01' = {
name: apimService
location: resourceGroup().location
sku: {
name: 'Developer'
capacity: 1
}
properties: {
publisherName: 'jahnavi'
publisherEmail: '[email protected]'
}
identity: {
type: 'SystemAssigned'
}
}
resource Serviceapi 'Microsoft.ApiManagement/service/apis@2021-08-01' = {
parent: apiManagement
name: apiname
properties: {
displayName: apiname
apiRevision: '1'
subscriptionRequired: true
path: apiname
protocols: [
'https'
]
}
}
resource Insights 'Microsoft.Insights/components@2020-02-02-preview' existing = {
name: 'newapsjah1'
}
resource apiMLogging 'Microsoft.ApiManagement/service/loggers@2021-08-01'={
name: 'newloger'
parent: apiManagement
properties:{
loggerType:'applicationInsights'
description:'Logging'
credentials: {
instrumentationKey: Insights.properties.InstrumentationKey
}
}
}
resource apiManagementApids 'Microsoft.ApiManagement/service/apis/diagnostics@2023-09-01-preview'={
name:'applicationinsights'
parent: Serviceapi
properties:{
loggerId:apiMLogging.id
alwaysLog:'allErrors'
verbosity:'error'
sampling: {
percentage: 100
samplingType: 'fixed'
}
}
}
部署成功: