locals { user_policies = flatten([for name, policies in var.iam_users : [for policy in policies.policies : { user = name, policy = policy }]]) users = toset([for user in local.user_policies : user.user]) } resource "aws_iam_user" "iam_user" { for_each = local.users name = each.key } resource "aws_iam_user_policy_attachment" "policy_attachment" { count = length(local.user_policies) user = aws_iam_user.iam_user[local.user_policies[count.index].user].name policy_arn = local.user_policies[count.index].policy }