Terraform部署Azure Function配置app_settings时报不支持块类型错误
问题产生原因
这个报错是HCL语法使用错误导致的:
- Terraform HCL对两类配置的语法要求有明确区分:
- 嵌套块:用于定义资源的结构化嵌套配置,写法为
块名 { 配置内容 },不需要加等号,比如配置里的sku、site_config都属于这类合法嵌套块 - 类型参数:用于传入字符串、数字、列表、键值对映射等值,必须使用
参数名 = 值的格式完成赋值,不能省略等号直接接大括号
- 嵌套块:用于定义资源的结构化嵌套配置,写法为
- 在使用的azurerm v3.10.0版本的
azurerm_function_app资源中,app_settings是接收键值对映射的类型参数,不是支持声明的嵌套块,使用块的写法编写app_settings { ... }不符合语法要求,就会触发该错误。
修复方法
只需要在app_settings字段名后补充等号,将块写法改为标准的map参数赋值写法即可,修正后的函数应用资源配置片段如下:
resource "azurerm_function_app" "example" { name = "test-azure-shafiq123" location = azurerm_resource_group.example.location resource_group_name = azurerm_resource_group.example.name app_service_plan_id = azurerm_app_service_plan.example.id storage_account_name = azurerm_storage_account.example.name storage_account_access_key = azurerm_storage_account.example.primary_access_key os_type = "linux" version = "~4" # 修正:增加等号,使用参数赋值语法 app_settings = { FUNCTIONS_WORKER_RUNTIME = "python" TESTING_KEY = "TESTING_VALUE" } site_config { linux_fx_version = "python|3.9" } }
- 修改完成后可先执行
terraform plan校验配置合法性、确认资源变更预期,校验通过后再执行terraform apply即可正常完成部署,不会再触发该报错。
内容的提问来源于stack exchange,提问作者Muhammad Shafiq
相关产品推荐
相关产品推荐

