Я хотел бы заменить 3 независимые переменные (dev_id, prod_id, stage_id) для одного списка, содержащего все три переменные, и перебрать их, применяя их к политике.
Это что-тотерраформ может сделать?
data "aws_iam_policy_document" "iam_policy_document_dynamodb" {
statement {
effect = "Allow"
resources = ["arn:aws:dynamodb:${var.region}:${var.account_id}:table:${var.dynamodb_table_name}"]
actions = [
"dynamodb:GetItem",
"dynamodb:PutItem",
"dynamodb:DeleteItem",
]
principals {
type = "AWS"
identifiers = [
"arn:aws:iam::${var.dev_id}:root",
"arn:aws:iam::${var.prod_id}:root",
"arn:aws:iam::${var.stage_id}:root"
]
}
}
}
Я посмотрел на циклы и интерполяцию, но кажется, что в 99% случаев интерполяция выполняется с помощью "count", который работает только для создания нескольких ресурсов (Iнадеюсь, я не говорю большую ложь).
Например, я использовал
principals {
count = "${length(var.list)}"
identifiers = ["arn:aws:iam::${var.list[count.index]}"]
}
, но это было безуспешно.
Есть ли какой-нибудь способ достижения конечной цели - заменить эти 3 переменные одним списком (или картой) и выполнить итерации по ним?