Python boto3 - iam 用户列表限制为 100 个用户

Python boto3 - iam userlist limits to 100 users

我正在编写一个脚本来从同一帐户中的所有 iam 用户中筛选出一些用户。它在一个 aws 帐户上运行良好,但是当我在另一个 aws 帐户上使用相同的脚本和 abuot 400+ 用户时,它只是在前 100 个之后跳过所有用户。

我假设某些东西限制了这一点,所以我创建了下面的脚本来计算给定 aws 帐户中的用户数量。它在 100 处停止并跳过其余用户。

#!/usr/bin/env python3
import boto3

def main():
    Usercount = 0

    iam = boto3.client('iam')
    client = boto3.client('iam',aws_access_key_id=XXXXXXXXXXXXXX, aws_secret_access_key=XXXXXXXXXXXXXXXXXXXXXX)

    try:
        for user in client.list_users()['Users']:
            Usercount +=1
        print(Usercount)
    except:
        print("Error getting user count")

如果 iam 用户少于 100,这将打印正确的数字,但如果用户超过 100,则仅打印 100。是否通过 aws 控制台设置了限制?有没有办法摆脱这个限制?

您必须使用 while 循环并验证响应是否存在标记。

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/iam.html#IAM.Client.list_users

Marker(字符串)-- 仅在对结果进行分页时以及仅在您收到指示结果被截断的响应后才使用此参数。将其设置为您收到的响应中 Marker 元素的值,以指示下一次调用应从何处开始。

调用 list_users() 时,如果 IsTruncated 为 True,则您应该使用 Marker 等于调用中返回的值进行后续调用。

或者,您可以简单地使用 paginator 来为您完成:

paginator = client.get_paginator('list_users')

response_iterator = paginator.paginate()

for user in response_iterator:
  Usercount += 1