Terraform 计划乱码 jq/json 输出,但 Terraform 控制台没有

Terraform plan garbles jq/json output, but terraform console doesn't

我一直在使用 TF 构建 github 自动化,以构建具有一个或多个 IAM 角色作为委托人的 S3 存储桶。当我将 JSON 角色分配给 var (jsonencode/formatlist) 时,使用 terraform 控制台进行测试会完美显示生成的策略。

但是当我 运行 一个 TF 计划时 json 反而是乱码,导致主块格式错误。

这是我的带有 AWS 帐号的变量块

variable "account_num" {
  default = [
  "123456789011",
  "123456789012"
  ]
}

Terraform 代码块如下所示。

"Principal": {
    "AWS": ${jsonencode(formatlist("arn:aws:iam::%s:role/role-access", var.account_num))}
},

当我使用 Terraform 控制台通过 jsonencode/formatlist 尝试这个 var 块时,它完美地创建了策略块。

$ terraform console    
> jsonencode(formatlist("arn:aws:iam::%s:role/role-access", var.account_num))
      ["arn:aws:iam::123456789011:role/role-access","arn:aws:iam::123456789012:role/role-access"]

然而在实际的地形规划中,区块是乱码。

+ Principal = {
    + AWS = [
        + <<~EOT
              arn:aws:iam::[
                "123456789011",
                "123456789012"
              ]:role/role-access
          EOT,
      ]
  }

感谢您的帮助!

我通过声明变量类型“string”变量解决了这个问题

"account_num" { 
type = list(string) 
    default = [] 
}