Terraform 在aws_iam_policy_文档中创建多个语句,其中包含值列表中的值(TF 1.13)

Terraform 在aws_iam_policy_文档中创建多个语句,其中包含值列表中的值(TF 1.13),terraform,terraform-provider-aws,terraform0.12+,Terraform,Terraform Provider Aws,Terraform0.12+,我有以下变量 variable "roles" { type = set(string) default = [ "A", "B", ] } 我想为每个值创建一个带有sts:AssumeRole操作的aws\u iam\u policy\u文档 我试过了 data "aws_iam_policy_document" "service_role_trust_node_worker

我有以下
变量

variable "roles" {
  type = set(string)
  default = [
    "A",
    "B",
  ]
}
我想为每个值创建一个带有
sts:AssumeRole
操作的
aws\u iam\u policy\u文档

我试过了

data "aws_iam_policy_document" "service_role_trust_node_workers" {
  statement {
    effect = "Allow"
    principals {
      identifiers = ["ec2.amazon.com"]
      type = "Service"
    }
    actions = ["sts:AssumeRole"]
  }


  for_each = var.roles
  statement {
    effect = "Allow"
    sid = "${each.key}-${each.value}"
    principals {
      identifiers = [
        each.value
      ]
      type = "AWS"
    }
    actions = [
      "sts:AssumeRole"
    ]
  }
}
但这就产生了这个

 json    = jsonencode(
            {
              + Statement = [
                  + {
                      + Action    = "sts:AssumeRole"
                      + Effect    = "Allow"
                      + Principal = {
                          + Service = "ec2.amazon.com"
                        }
                      + Sid       = ""
                    },
                  + {
                      + Action    = "sts:AssumeRole"
                      + Effect    = "Allow"
                      + Principal = {
                          + AWS = "B"
                        }
                      + Sid       = "B-B"
                    },
                ]
              + Version   = "2012-10-17"
            }
        )


因此,出于某种原因,
A
被忽略

有什么建议吗?

好的,找到了:)

dynamic "statement" {
    for_each = var.roles
    iterator = role
    content {
      effect = "Allow"
      principals {
        identifiers = [
          role.value
        ]
        type = "AWS"
      }
      actions = [
        "sts:AssumeRole"
      ]
    }
  }