When listing AWS IAM Users in Boto3, you will find that not all the users are retrieved. This is because they are paginated.
To do a normal list_users api call:
1
2
3
4
>>> import boto3
>>> iam = boto3 . Session ( region_name = 'eu-west-1' , profile_name = 'default' ) . client ( 'iam' )
>>> len ( iam . list_users ()[ 'Users' ])
100
Although I know there’s more than 200 users. Therefore we need to paginate through our users:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
>>> import boto3
>>> iam = boto3 . Session ( region_name = 'eu-west-1' , profile_name = 'default' ) . client ( 'iam' )
>>> paginator = iam . get_paginator ( 'list_users' )
>>> users = []
>>> all_users = []
>>> for response in paginator . paginate ():
... users . append ( response [ 'Users' ])
...
>>> len ( users )
3
>>> for iteration in xrange ( len ( users )):
... for userobj in xrange ( len ( users [ iteration ])):
... all_users . append (( users [ iteration ][ userobj ][ 'UserName' ]))
...
>>> len ( all_users )
210
For more information on this, have a look at AWS Documentation about Pagination
Thank You
Please feel free to show support by, sharing this post, making a donation , subscribing or reach out to me if you want me to demo and write up on any specific tech topic.