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

修正无App Insights的空Python 3.11 Azure Function App Bicep模板(Runtime Version显示Error问题)

修正无App Insights的空Python 3.11 Azure Function App Bicep模板(Runtime Version显示Error问题)

我来帮你搞定这个Runtime Version显示Error的问题!你的现有模板已经搭好了基础框架,但几个关键配置没到位,导致Function App没法正确识别Python运行时。下面我给你修正后的完整模板,同时解释核心修改点:

核心问题分析

你当前模板里的AzureWebJobsStorage用了存储账户的blob端点URL,但Function App需要的是存储账户连接字符串,而不是单纯的端点。另外,Linux动态计划(Y1)还需要额外的配置来托管站点内容,以及明确指定Functions运行时版本,这些都是你之前缺失的。

问题现象:部署后Function App的Runtime Version字段显示"Error"

期望效果:Runtime Version显示正确的v4版本(如4.1036.2.2)

修正后的完整Bicep模板

// 部署无App Insights的空Python 3.11 Azure Function App
// 适用于Linux动态计划(Y1),可直接部署到现有资源组

@description('存储账户名称(需全局唯一)')
param storageAccountName string = 'pyfunctest100'

@description('App Service Plan名称')
param appServicePlanName string = 'pyfunctestAppService'

@description('Function App名称(需全局唯一)')
param functionAppName string = 'shawnopyFuncTest'

@description('所有资源的部署位置,默认使用资源组位置')
param location string = resourceGroup().location

// 存储账户资源(用于函数运行时存储和站点内容托管)
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

// 获取存储账户连接字符串(用于后续应用设置)
var storageConnectionString = 'DefaultEndpointsProtocol=https;AccountName=${storageAccount.name};AccountKey=${listKeys(storageAccount.id, storageAccount.apiVersion).keys[0].value};EndpointSuffix=${environment().suffixes.storage}'

// Linux动态App Service Plan(Y1)
resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = {
  name: appServicePlanName
  location: location
  kind: 'linux'
  sku: {
    name: 'Y1'
    tier: 'Dynamic'
  }
  properties: {
    reserved: true // Linux计划必须设置为true
  }
}

// 空Python 3.11 Function App(无App Insights)
resource functionApp 'Microsoft.Web/sites@2022-09-01' = {
  name: functionAppName
  location: location
  kind: 'functionapp,linux'
  properties: {
    serverFarmId: appServicePlan.id
    siteConfig: {
      linuxFxVersion: 'Python|3.11' // 指定Python 3.11运行时
      appSettings: [
        {
          name: 'FUNCTIONS_WORKER_RUNTIME'
          value: 'python'
        }
        {
          name: 'FUNCTIONS_EXTENSION_VERSION'
          value: '~4' // 指定Functions v4运行时,对应你期望的版本
        }
        {
          name: 'AzureWebJobsStorage'
          value: storageConnectionString // 使用完整的存储连接字符串(之前的错误点)
        }
        {
          name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING'
          value: storageConnectionString // Linux动态计划需要这个来托管站点内容
        }
        {
          name: 'WEBSITE_CONTENTSHARE'
          value: toLower(functionAppName) // 站点内容共享名称,用小写的Function App名称
        }
      ]
    }
    httpsOnly: true
  }
}

// 输出资源名称,方便后续查看
output storageAccountName string = storageAccount.name
output appServicePlanName string = appServicePlan.name
output functionAppName string = functionApp.name

关键修改点说明

  1. 存储连接字符串替换:把原来的blob端点URL换成了完整的存储账户连接字符串,Function App需要这个来处理作业队列和状态存储。
  2. 添加Functions运行时版本:通过FUNCTIONS_EXTENSION_VERSION: '~4'明确指定使用v4运行时,这是Runtime Version正确显示的关键。
  3. Linux动态计划必需配置:新增WEBSITE_CONTENTAZUREFILECONNECTIONSTRING和WEBSITE_CONTENTSHARE,用于在Linux动态计划下托管Function App的站点内容,缺失这两个会导致运行时识别失败。
  4. 增强安全性:添加了supportsHttpsTrafficOnly: true和httpsOnly: true,确保所有流量都是HTTPS。

部署命令

你可以直接用你原来的命令部署:

az deployment group create --resource-group rg-py-func-tst --template-file main.bicep

验证效果

部署完成后,刷新Azure门户里的Function App页面,Runtime Version应该会正确显示为v4的对应版本(类似你期望的4.1036.2.2),而不是"Error"。这个模板创建的是完全空的Function App,之后你可以单独部署你的Python函数代码。

备注:内容来源于stack exchange,提问作者Shawn Eary

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:54:29