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 = []
}
我一直在使用 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 = []
}