You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Terraform中获取指定IAM组用户ARN配置Lake Formation权限

解决AWS Lake Formation权限批量配置问题

首先,aws_iam_users数据源没法直接按IAM组过滤用户,得用aws_iam_group_membership数据源单独拉取每个目标组的成员。接下来分步骤实现你的需求:

1. 拉取目标组的成员用户

先定义两个数据源,分别获取admin和security组下的所有用户:

data "aws_iam_group_membership" "admin_group" {
  group_name = "admin"
}

data "aws_iam_group_membership" "security_group" {
  group_name = "security"
}

2. 合并并去重用户ARN

把两个组的用户合并,用distinct函数去重(避免同一用户在两个组时重复创建权限),再通过aws_iam_user数据源批量获取这些用户的ARN:

# 合并两个组的用户名并去重
locals {
  target_usernames = distinct(concat(
    data.aws_iam_group_membership.admin_group.users,
    data.aws_iam_group_membership.security_group.users
  ))
}

# 批量获取目标用户的ARN
data "aws_iam_user" "target_users" {
  for_each = toset(local.target_usernames)
  username = each.key
}

3. 批量创建Lake Formation权限

用for_each遍历用户ARN集合,给每个用户配置权限:

resource "aws_lakeformation_permissions" "example" {
  for_each = data.aws_iam_user.target_users
  principal   = each.value.arn
  permissions = ["CREATE_TABLE", "ALTER", "DROP"]

  database {
    name       = aws_glue_catalog_database.example.name
    catalog_id = "110376042874"
  }
}

关键说明

  • aws_iam_group_membership只返回用户名,所以需要额外用aws_iam_user数据源获取对应的ARN
  • distinct函数确保同一用户即使在多个组里,也只会创建一条权限资源,避免重复
  • for_each搭配toset转换后的用户名集合,能让Terraform正确追踪资源的增减变化

内容的提问来源于stack exchange,提问作者arooz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 08:52:20