用于创建批量IAM用户并将多个用户策略附加到同一个terraform代码

时间:2020-11-11 19:05:56

标签: terraform

我的目标是创建多个IAM用户,并在单个代码中将多个策略附加到每个用户,但是我无法实现。

请帮助我提供代码。

下面是我尝试运行的代码,但失败了。

resource "aws_iam_user" "example" {
  count = "${length(var.aws_iam_user)}"
  name = "${element(var.aws_iam_user,count.index )}"
}

resource "aws_iam_user_policy_attachment" "user-policy-attachment" {
  aws_iam_user       = "${var.aws_iam_user}"
  count      = "${length(var.iam_policy_arn)}"
  policy_arn = "${var.iam_policy_arn[count.index]}"
}

有人可以帮助我提供正确的代码来完成此任务吗? 在代码中,我们应该能够创建批量用户,并将策略附加到每个用户。每个用户的策略可以相同或不同。

1 个答案:

答案 0 :(得分:0)

如果您使用的是Terraform 0.12或更高版本,则可以使用for_each在地图上进行交互并生成地图,如果您使用count并删除用户,则将重新创建该位置之后定义的所有用户。 / p>

这是一个简单的例子。

terraform.tfvars

users = [
   "user1": [ "policy1ARN", "policy3ARN" ]
   "user2": [ "policy1ARN" ],
   "user3": [ "police2ARN" ]
]

example.tf

resource "aws_iam_user" "list" {
  for_each      = var.users
  name          = each.key
  force_destroy = true
}

resource "aws_iam_user_policy_attachment" "list" {
  for_each   = var.users
  user       = aws_iam_user[each.key].name
  policy_arn = each.value
}

仅是一个示例,根据您想要实现的方式来展示如何使用for_each,但是作为最佳实践,最好是使用各自的策略创建IAM组,而不是将策略附加到每个用户,您可以将用户添加到组中。