You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

部署Linux Consumption Plan函数App的Bicep模板报Bad Request错误求助

问题分析与修复方案

你的Bicep代码存在多处语法错误和配置缺失,导致部署时返回Bad Request错误,以下是具体问题和修复后的代码:

核心问题点

  • 语法错误:functionApp资源的siteConfig和properties块未正确闭合大括号,导致JSON结构无效
  • 存储账户配置错误:kind: 'Storage'无法满足函数App的存储需求,需改为StorageV2
  • 资源关联缺失:Function App未关联托管计划、存储账户连接字符串和Application Insights
  • 参数未使用:packageUri参数未配置到Function App的部署设置中

修复后的完整Bicep代码

param functionAppName string = 'func-${uniqueString(resourceGroup().id)}'
 
@allowed([
  'Standard_LRS'
])
param storageAccountType string = 'Standard_LRS'

param location string = resourceGroup().location
 
param appInsightsLocation string = resourceGroup().location
 
@description('The language worker runtime to load in the function app.')
@allowed([
  'node'
])
param functionWorkerRuntime string = 'node'

@description('Linux runtime version, e.g., NODE|18-lts')
param linuxFxVersion string

@description('URL of the deployment package zip file')
param packageUri string

var hostingPlanName = functionAppName
var applicationInsightsName = functionAppName
var storageAccountName = '${uniqueString(resourceGroup().id)}azfunctions'

// 存储账户:使用StorageV2类型满足函数App需求
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-05-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

// Linux Consumption托管计划
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
  name: hostingPlanName
  location: location
  sku: {
    name: 'Y1'
    tier: 'Dynamic'
  }
  kind: 'FunctionApp'
  properties: {
    reserved: true
  }
}

// Application Insights
resource applicationInsight 'Microsoft.Insights/components@2020-02-02' = {
  name: applicationInsightsName
  location: appInsightsLocation
  tags: {
    'hidden-link:${resourceId('Microsoft.Web/sites', functionAppName)}': 'Resource'
  }
  properties: {
    Application_Type: 'web'
  }
  kind: 'web'
}

// Function App:修复语法错误,补充必要关联配置
resource functionApp 'Microsoft.Web/sites@2022-03-01' = {
  name: functionAppName
  location: location
  kind: 'functionapp,linux'
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    reserved: true
    serverFarmId: hostingPlan.id
    siteConfig: {
      linuxFxVersion: linuxFxVersion
      appSettings: [
        {
          name: 'AzureWebJobsStorage'
          value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};AccountKey=${storageAccount.listKeys().keys[0].value}'
        }
        {
          name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING'
          value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};AccountKey=${storageAccount.listKeys().keys[0].value}'
        }
        {
          name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
          value: applicationInsight.properties.InstrumentationKey
        }
        {
          name: 'FUNCTIONS_EXTENSION_VERSION'
          value: '~4'
        }
        {
          name: 'FUNCTIONS_WORKER_RUNTIME'
          value: functionWorkerRuntime
        }
        {
          name: 'WEBSITE_RUN_FROM_PACKAGE'
          value: packageUri
        }
      ]
    }
  }
  dependsOn: [
    storageAccount
    hostingPlan
    applicationInsight
  ]
}

关键修复说明

  1. 语法修复:补全functionApp资源中缺失的闭合大括号,确保JSON结构合法
  2. 存储账户优化:将kind改为StorageV2,并启用supportsHttpsTrafficOnly增强安全性
  3. 资源关联:
    • 通过serverFarmId关联托管计划
    • 配置AzureWebJobsStorage和WEBSITE_CONTENTAZUREFILECONNECTIONSTRING连接存储账户
    • 注入Application Insights的InstrumentationKey
  4. 部署配置:添加WEBSITE_RUN_FROM_PACKAGE参数,使用传入的packageUri部署代码包
  5. 托管计划完善:明确sku.tier: 'Dynamic'和kind: 'FunctionApp',符合Consumption Plan的标准配置

内容的提问来源于stack exchange,提问作者LucasHenry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 20:09:25