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

Terraform JSON解码错误:无法将数组解析为字符串类型字段

问题分析与解决

错误原因

报错Terraform : Error decoding JSON: json: cannot unmarshal array into Go struct field KeyValuePair.Environment.Value of type string的核心原因是:你给env列表中对象的value字段赋值了数组类型,但模块service_definition要求value必须是字符串类型。

看你的代码:

value = "${split(",", module.env_helper.is_legacy ? join(",", local.allowed_source_types) : join(",", local.fedramp_source_types))}"

join函数已经把列表转成了逗号分隔的字符串(比如"activeDirectory,azureActiveDirectory,googleDirectory"),但你又用split把这个字符串拆回了数组,导致value变成数组,不符合模块的类型要求。

修复方案

直接去掉多余的split函数,保留join的结果即可:

locals {
  fedramp_source_types = ["activeDirectory", "azureActiveDirectory"]
  allowed_source_types = ["activeDirectory", "azureActiveDirectory", "googleDirectory"]
}

module "service_definition" {
  ...
  env = [
    {
      name  = "ALLOWED_SOURCE_TYPES",
      value = module.env_helper.is_legacy ? join(",", local.allowed_source_types) : join(",", local.fedramp_source_types)
    }
  ]
}

补充说明

  • join(",", list):将列表元素用逗号拼接成单个字符串,完全符合value字段的字符串类型要求
  • 移除${}插值语法:Terraform 0.12+版本中,在表达式里可以直接引用变量和函数,不需要额外的插值包裹

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 21:15:31