Terraform部署azurerm_linux_function_app时Python3.10版本报错求助
问题描述
尝试通过Terraform部署Python 3.10版本的Azure Linux函数应用失败,但切换为Python 3.9版本即可成功部署。已知Azure官方支持Python 3.10,且Terraform文档显示azurerm_linux_function_app资源支持该版本,却收到如下报错,请问问题出在哪里?
错误信息
Error: expected site_config.0.application_stack.0.python_version to be one of [3.9 3.8 3.7], got 3.10 │ │ with azurerm_linux_function_app.fn_analytics, │ on python_analytics_functions.tf line 65, in resource "azurerm_linux_function_app" "fn_analytics": │ 65: python_version = "3.10"
相关代码
resource "azurerm_service_plan" "asp_analytics" { name = "<funct plan name>" location = var.location resource_group_name = var.resource_group os_type = "Linux" sku_name = "Y1" } resource "azurerm_linux_function_app" "fn_analytics" { name = "<func name>" location = var.location resource_group_name = var.resource_group storage_account_name = azurerm_storage_account.safn.name storage_account_access_key = azurerm_storage_account.safn.primary_access_key service_plan_id = azurerm_service_plan.asp_analytics.id identity { type = "SystemAssigned" } app_settings = { ... } site_config { application_stack { python_version = "3.10" } } }
解决方案
问题核心是本地使用的Terraform AzureRM Provider版本过旧,未将Python 3.10加入允许的版本校验列表。官方文档对应最新版Provider,旧版本不支持该配置,因此触发报错。
解决步骤:
- 查看当前Provider版本:执行
terraform version命令,或查看项目根目录的terraform.lock.hcl文件,确认azurerm provider版本。 - 更新版本约束:在Terraform配置文件(如
main.tf)中添加/更新版本指定,确保使用支持Python 3.10的版本(建议3.10.0及以上):terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = ">= 3.10.0" } } } - 升级Provider:执行
terraform init -upgrade命令,让Terraform下载并更新到指定版本的azurerm provider。 - 重新部署:执行
terraform apply重新部署函数应用,此时Python 3.10的配置将被正常识别。
内容的提问来源于stack exchange,提问作者Nelssen
相关产品推荐
相关产品推荐

