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

Python boto3调用IAM list_users仅返回100个用户如何解决

问题原因

这不是AWS控制台设置的限制,是AWS IAM服务ListUsers接口的原生分页规则:所有AWS List类型的API默认单次调用最多返回100条资源,你代码中只调用了一次list_users(),仅拉取了第一页的100条用户数据,因此统计到100就停止了。该分页机制是AWS API的通用设计,不存在所谓「解除限制」的设置,通过分页拉取就能获取全量的IAM用户数据。

解决方法

有两种常用的实现方案:

  • 方案1:手动处理分页标记:每次调用API后检查返回结果中的IsTruncated字段,若为True则携带返回的Marker参数再次调用接口拉取下一页数据,直到IsTruncated为False即可拉取全量数据。
  • 方案2:使用boto3内置的paginator分页器(更简便,无需手动处理标记逻辑),boto3已经封装好了完整的分页处理逻辑,直接调用即可自动拉取所有页面的数据。

修改后的完整代码参考:

#!/usr/bin/env python3
import boto3

def main():
    Usercount = 0
    client = boto3.client(
        'iam',
        aws_access_key_id="XXXXXXXXXXXXXX",
        aws_secret_access_key="XXXXXXXXXXXXXXXXXXXXXX"
    )

    try:
        # 初始化list_users接口的分页器
        paginator = client.get_paginator('list_users')
        # 遍历所有页面的用户数据
        for page in paginator.paginate():
            for user in page['Users']:
                Usercount +=1
        print(Usercount)
    except Exception as e:
        print(f"Error getting user count: {e}")

if __name__ == "__main__":
    main()
额外注意事项
  • 不要将AWS访问密钥硬编码在代码中,生产环境推荐使用IAM角色、本地凭证配置文件或环境变量传递凭证,避免密钥泄露风险。
  • list_users接口支持手动指定MaxItems参数,最大可设置为1000,即单次调用最多返回1000条用户数据,但若用户量超过1000仍需通过分页处理拉取全量数据。

内容的提问来源于stack exchange,提问作者data-bite

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:24:08