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

如何在Terraform中通过角色名前缀获取AWS IAM角色ARN?

基于角色名前缀获取AWS IAM角色ARN的Terraform实现

你当前使用的aws_iam_role数据源要求精确匹配角色名,无法直接通过前缀筛选目标角色。要实现按前缀获取角色ARN,可以借助aws_iam_roles数据源先拉取指定范围内的所有角色,再通过前缀过滤出目标对象,具体代码如下:

# 拉取SSO角色所在路径下的所有IAM角色(路径格式通常为/aws-reserved/sso.amazonaws.com/[区域]/,按需替换区域)
data "aws_iam_roles" "admin_sso_roles" {
  path_prefix = "/aws-reserved/sso.amazonaws.com/eu-west-1/"
}

# 过滤出名称以AWSReservedSSO_AdministratorAccess开头的角色
locals {
  target_admin_role = [
    for role in data.aws_iam_roles.admin_sso_roles.roles : role
    if startswith(role.name, "AWSReservedSSO_AdministratorAccess")
  ]
}

# 输出目标角色的ARN(假设每个账号仅存在一个符合前缀的角色,直接取第一个结果)
output "role_arn" {
  value = local.target_admin_role[0].arn
}

注意事项:

  • 确保Terraform使用的AWS身份拥有iam:ListRoles权限,否则无法拉取角色列表
  • 如果不确定角色的路径前缀,可以删除path_prefix参数,但这样会拉取账号内所有IAM角色,过滤效率会降低
  • 若存在多个符合前缀的角色,需要额外处理(比如增加判断逻辑或调整过滤条件),避免索引越界问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 08:16:57