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

为什么使用AWS JavaScript SDK调用iam.listUsers仅返回100个IAM用户

问题根因

AWS IAM 开放接口的listUsers默认做了分页限制,单次请求最多返回100条IAM用户数据。你没有加分页处理逻辑,所以只能拿到第一页的100条结果,和你账户下的总用户数无关。

解决方案

如果你使用的是AWS SDK for JavaScript v2

方案1:手动处理分页标记

每次请求返回结果中如果IsTruncated字段值为true,说明还有后续数据,将返回的Marker作为下一次请求的入参传入即可拉取下一页数据,直到IsTruncated为false就拉取完了所有用户:

async function fetchAllIamUsers() {
  const userList = [];
  let nextMarker = null;
  do {
    const requestParams = nextMarker ? { Marker: nextMarker } : {};
    const res = await iam.listUsers(requestParams).promise();
    userList.push(...res.Users);
    nextMarker = res.IsTruncated ? res.Marker : null;
  } while (nextMarker);
  return userList;
}

// 调用获取全量用户
const allUsers = await fetchAllIamUsers();

方案2:使用SDK内置分页工具

v2版本SDK已经内置了分页迭代器,可以更简洁的完成全量数据拉取:

const allUsers = [];
for await (const page of iam.listUsers().paginate()) {
  allUsers.push(...page.Users);
}

如果你使用的是AWS SDK for JavaScript v3

v3版本需要引入对应的分页工具来实现全量拉取:

import { IAMClient, paginateListUsers } from "@aws-sdk/client-iam";

const iamClient = new IAMClient({
  // 你的客户端配置
});

async function fetchAllIamUsers() {
  const userList = [];
  const paginator = paginateListUsers({ client: iamClient }, {});
  for await (const page of paginator) {
    userList.push(...page.Users);
  }
  return userList;
}

const allUsers = await fetchAllIamUsers();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 19:48:03