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

如何通过标签过滤检索AWS IAM角色的ARN、名称等详情信息

基于标签检索IAM角色的方法

AWS的Resource Groups Tagging API完全支持过滤IAM角色,你之前使用的过滤IAM策略的命令稍作修改即可满足需求。

方法1:使用resourcegroupstaggingapi直接过滤(推荐)

  • 基础查询:列出所有带标签的IAM角色,返回ARN和对应标签
    命令如下:
    aws resourcegroupstaggingapi get-resources --region us-east-1 --resource-type-filters iam:role
    
  • 按指定标签过滤,比如筛选标签Environment=Production的IAM角色:
    aws resourcegroupstaggingapi get-resources --region us-east-1 --resource-type-filters iam:role --tag-filters Key=Environment,Values=Production
    
  • 直接提取所需的ARN和角色名称,用--query参数裁剪输出:
    aws resourcegroupstaggingapi get-resources --region us-east-1 --resource-type-filters iam:role --tag-filters Key=Environment,Values=Production --query 'ResourceTagMappingList[].{ARN:ResourceARN,RoleName:ResourceARN.split(`/`)[-1]}'
    
    该命令会直接返回结构化的ARN和角色名列表,无需额外解析。

方法2:遍历角色查询标签(仅适合角色数量少的场景)

如果特殊场景下无法使用Tagging API,可以先列出所有IAM角色,再逐个查询标签过滤:

# 先获取所有角色名
aws iam list-roles --query 'Roles[].RoleName' --output text | tr '\t' '\n' | while read role; do
  # 查询角色标签
  tags=$(aws iam list-role-tags --role-name $role --query 'Tags[?Key==`Environment` && Value==`Production`]' --output text)
  if [ -n "$tags" ]; then
    # 匹配到标签就输出ARN和名称
    arn=$(aws iam get-role --role-name $role --query 'Role.Arn' --output text)
    echo "RoleName: $role, ARN: $arn"
  fi
done

Ansible适配方案

针对Ansible原生模块不支持按标签过滤IAM角色的问题,可以直接在Ansible中用shell模块调用上述AWS CLI命令,用register关键字接收输出,再解析为所需变量使用即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 05:21:00