我的目标是创建多个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]}"
}
有人可以帮助我提供正确的代码来完成此任务吗? 在代码中,我们应该能够创建批量用户,并将策略附加到每个用户。每个用户的策略可以相同或不同。
答案 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组,而不是将策略附加到每个用户,您可以将用户添加到组中。