我正在尝试将现有 IAM 策略附加到具有相同命名约定的多个 IAM 角色,我正在使用以下 terraform 文件进行尝试,但它不起作用。
vars.tf
variable "aws_iam_role_names" {
type = list(string)
default = ["name1", "name2", "name3"]
}
main.tf
resource "aws_iam_role_policy_attachment" "iam-role" {
role = "${var.aws_iam_role_names[count.index]}-iam-role"
policy_arn = var.some_policy_arn
}
我的目标是使用单个资源 block 并将 some_policy_arn 附加到角色 name1-iam-role、name2-iam-role、name3-iam-role 以及我将来添加到变量中的任何角色名称。
提前致谢!
最佳答案
您可以使用count :
resource "aws_iam_role_policy_attachment" "iam-role" {
count = length(var.aws_iam_role_names)
role = "${var.aws_iam_role_names[count.index]}-iam-role"
policy_arn = var.some_policy_arn
}
对于for_each :
resource "aws_iam_role_policy_attachment" "iam-role" {
for_each = toset(var.aws_iam_role_names)
role = "${each.key}-iam-role"
policy_arn = var.some_policy_arn
}
关于amazon-web-services - 将一项策略 Terraform 为多个 IAM 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73904471/