我一直在用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,
]
}
谢谢你的帮助!
我通过声明变量类型"字符串";可变
"account_num" {
type = list(string)
default = []
}