通过Terraform创建Azure Linux Function App函数遇400错误求助
问题描述
更新Python脚本后执行terraform plan失败,报错如下:
│ Error: 检索函数(订阅:"****" │ 资源组名称:"****" │ 站点名称:"crln-irxsot-dev-fa" │ 函数名称:"crln-irxsot-pic-dev-function-test"):意外状态码400(400 Bad Request),响应内容:{"Code":"BadRequest","Message":"Encountered an error (InternalServerError) from host runtime.","Target":null,"Details":[{"Message":"Encountered an error (InternalServerError) from host runtime."},{"Code":"BadRequest"},{"ErrorEntity":{"Code":"BadRequest","Message":"Encountered an error (InternalServerError) from host runtime."}}],"Innererror":null} │ │ 检索函数(订阅:"****" │ 资源组名称:"****" │ 站点名称:"crln-irxsot-dev-fa" │ 函数名称:"crln-irxsot-pic-dev-function-test"):意外状态码400 │ (400 Bad Request),响应内容: │ {"Code":"BadRequest","Message":"Encountered an error (InternalServerError) │ from host runtime.","Target":null,"Details":[{"Message":"Encountered an │ error (InternalServerError) from host │ runtime."},{"Code":"BadRequest"},{"ErrorEntity":{"Code":"BadRequest","Message":"Encountered │ an error (InternalServerError) from host runtime."}}],"Innererror":null} ╵ 操作失败:执行terraform plan失败(退出码1)
相关Terraform模块配置:
module "terraform-azurerm-function-app-function-sot"{ source = "cps-terraform.zzzxx.com/IRX/terraform-azurerm-function-app-function/azurerm" version = "0.0.1" name = "crln-irxsot-pic-dev-fun" function_app_id = module.terraform_linux_asp_function_app-sot.id config_json = { "bindings" = [ { "authLevel" = "FUNCTION" "direction" = "IN" "name" = "myblob" "type" = "blobTrigger" "path" = "crln-rxsot-pic/INBOUND/{name}" "connection" = "AzureWebJobsStorage" }, ] "entryPoint" = "blob_trigger_function" "functionDirectory" = "/home/site/wwwroot" "language" = "python" "name" = "BlobTriggerFunction" "scriptFile" = "function_app.py" } file = { name = "function_app.py" content = file("function_app.py") } }
排查与解决办法
检查Python脚本有效性
- 本地执行
python -m py_compile function_app.py检测语法错误,有问题会直接抛出提示。 - 确认脚本中存在
config_json里指定的entryPoint(即blob_trigger_function)函数,且参数符合Blob触发器要求(比如接收myblob参数)。
- 本地执行
排查Function App运行时状态
- 登录Azure门户,进入目标Function App的「诊断和解决问题」页面,搜索
InternalServerError获取具体报错日志。 - 重启Function App实例,之后重新执行
terraform plan。
- 登录Azure门户,进入目标Function App的「诊断和解决问题」页面,搜索
修正Terraform配置问题
- 检查
functionDirectory路径:Linux环境下单函数部署需指定到具体函数目录(比如/home/site/wwwroot/BlobTriggerFunction),当前配置可能导致运行时找不到正确入口。 - 确认
bindings中的AzureWebJobsStorage连接字符串已在Function App的应用设置中配置,且值有效。
- 检查
升级Terraform模块版本
当前使用的模块版本0.0.1为早期版本,可能存在Azure API兼容问题,尝试升级到最新稳定版本,或查看模块仓库的issue列表确认是否有相关修复。
内容的提问来源于stack exchange,提问作者user30395462
相关产品推荐
相关产品推荐

