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



我正在编写一个脚本,从同一帐户中的所有iam用户中筛选出一些用户。它在一个aws帐户上运行良好,但当我在另一个拥有400多名用户的aws帐户中使用相同的脚本时,它只是跳过了前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控制台设置了限制?有没有办法摆脱这个限制

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

或者,你可以简单地使用一个分页器来为你做这件事:

paginator = client.get_paginator('list_users')
response_iterator = paginator.paginate()
for user in response_iterator:
Usercount += 1

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

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

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

相关内容

最新更新