amazon-web-services - 将一项策略 Terraform 为多个 IAM 角色

标签 amazon-web-services terraform

我正在尝试将现有 IAM 策略附加到具有相同命名约定的多个 IAM 角色,我正在使用以下 terraform 文件进行尝试,但它不起作用。

vars.tf

variable "aws_iam_role_names" {
  type    = list(string)
  default = ["name1", "name2", "name3"]
} 

ma​​in.tf

resource "aws_iam_role_policy_attachment" "iam-role" {
role = "${var.aws_iam_role_names[count.index]}-iam-role"
policy_arn = var.some_policy_arn
}

我的目标是使用单个资源 block 并将 some_policy_arn 附加到角色 name1-iam-role、name2-iam-role、name3-iam-role 以及我将来添加到变量中的任何角色名称。

提前致谢!

最佳答案

您可以使用count :

resource "aws_iam_role_policy_attachment" "iam-role" {
  count = length(var.aws_iam_role_names)
  role = "${var.aws_iam_role_names[count.index]}-iam-role"
  policy_arn = var.some_policy_arn
}

对于for_each :

resource "aws_iam_role_policy_attachment" "iam-role" {
  for_each = toset(var.aws_iam_role_names)
  role = "${each.key}-iam-role"
  policy_arn = var.some_policy_arn
}

关于amazon-web-services - 将一项策略 Terraform 为多个 IAM 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73904471/

相关文章:

azure - 将本地 tf 状态文件指定给管道中的 azurerm 提供程序

amazon-web-services - AWS Cognito : Access to Identity is forbidden when calling getOpenIdToken()

java - 使用序列号和分区 ID 从 Kinesis 获取记录

amazon-web-services - 如何删除不是由堆栈创建的AWS资源?

amazon-web-services - DynamoDb - 吞吐量限制到底如何运作?

amazon-web-services - Terraform - 为安全组迭代并创建入口规则

amazon-web-services - 在 Kubernetes 中使用 Terraform 输出

Terraform:如何有条件地将 EBS 卷分配给 ECS 集群

amazon-web-services - Cloudformation 模板中的组合 Fn::Select + Fn::Split + Fn:GetAtt

Terraform 销毁在 CircleCI 中失败