Terraform-为每个创建的IAM用户分配一个组

Terraform-为每个创建的IAM用户分配一个组,terraform,amazon-iam,Terraform,Amazon Iam,在创建具有以下代码的IAM用户的过程中,我如何将其分配给AWS中现有的alredy组 resource "aws_iam_user" "developer-accounts" { path = "/" for_each = toset(var.names) name = each.value force_destroy = true } resource "aws

在创建具有以下代码的IAM用户的过程中,我如何将其分配给AWS中现有的alredy组

resource "aws_iam_user" "developer-accounts" {
  path          = "/"
  for_each      = toset(var.names)
  name          = each.value
  force_destroy = true
}

resource "aws_iam_user_group_membership" "developers-membership" {

  user   = values(aws_iam_user.developer-accounts)[*].name
  groups = [data.aws_iam_group.developers.group_name]
}
通过上面的代码,我得到了

属性“user”的值不正确:需要字符串

使用的用户变量:

variable "names" {
  description = "account names"
  type        = list(string)
  default     = ["user-1", "user-2", "user-3",...etc]
}
问题的第二部分。下面我想为每个用户创建密码:

resource "aws_iam_user_login_profile" "devs_login" {
  for_each                = toset(var.names)
  user                    = each.value
  pgp_key                 = "keybase:macdrorepo"
  password_reset_required = true
}
输出:

output "all_passwordas" {
  value = values(aws_iam_user_login_profile.devs_login)[*].encrypted_password
}
我如何解码密码?下面是不工作,因为我肯定错过了某种循环

terraform输出所有密码为| base64——解码| keybase pgp 解密


对于您的第一个问题,以下内容可以解决:

您需要再次迭代所有用户,并将组附加到每个用户:


回答第二个问题:您试图同时解密所有用户密码,这将无法按预期工作。相反,您需要逐个解密每个用户的密码。您可以使用
jq
之类的工具来循环
terraformoutput-json
output


只是一张小纸条。最好打开两个问题,而不是在一个问题中添加多个(不相关的)问题。我希望这个答案能有所帮助。

谢谢你刚才的回答,我和你一样明白了。关于密码-拉索谢谢你。。。好的,我会把它分开,但这次它是相关的,因为我在同一个模块中生成密码的时候忘了提一下——对不起,还有一个问题。我在地图输出“用户名”中有密码:“加密密码”。我怎样才能像你提到的那样逐个解密这个密码?我尝试使用terraform输出密码[0]| base64--decode | keybase pgp decrypt with no lucky您可以选择使用
for_each=aws_iam_user.developer accounts
,然后此资源块中的用户名将是
each.value.name
resource "aws_iam_user_group_membership" "developers-membership" {
  for_each = toset(var.names)

  user   = aws_iam_user.developer-accounts[each.key].name
  groups = [data.aws_iam_group.developers.group_name]
}