【问题标题】:Terraform plan garbles jq/json output, but terraform console doesn'tTerraform 计划乱码 jq/json 输出,但 terraform 控制台不会
【发布时间】:2021-07-29 23:50:55
【问题描述】:

我一直在使用 TF 构建一个 github 自动化,以构建一个 S3 存储桶,其中一个或多个 IAM 角色作为委托人。当我将角色作为 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"]

但是在实际的 terraform 计划中,该块是乱码。

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

感谢您的帮助!

【问题讨论】:

  • 您可以回答自己的问题,如果您解决了问题,请接受。

标签: json amazon-web-services terraform amazon-iam github-actions


【解决方案1】:

我通过声明变量类型“字符串”变量来解决这个问题

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

【讨论】:

    猜你喜欢
    • 2020-10-15
    • 2018-09-06
    • 2019-10-13
    • 1970-01-01
    • 2021-10-28
    • 2022-06-21
    • 2023-01-10
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多