Microsoft.ApiManagement/service/apis/diagnostics 名称字段问题

问题描述 投票:0回答:1

我正在尝试使用 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”之一(类似于在门户中启用时的选项),我已经尝试过,但似乎没有任何效果。

任何帮助表示赞赏!

api azure-bicep diagnostics apim
1个回答
0
投票

无法处理第“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'
    }
}
}

部署成功:

enter image description here

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.