Advertisement
Guest User

Untitled

a guest
Feb 23rd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. # Dumps all IAM information to stdout
  2. # Basically a version of GetAccountAuthorizationDetails that takes care of pagination
  3. # for you. Don't use the aws CLI version or you'll have to deal with pagination yourself
  4.  
  5. import boto3
  6. import botocore
  7. import json
  8.  
  9.  
  10. from datetime import datetime
  11.  
  12. def json_serial(obj):
  13. """JSON serializer for objects not serializable by default json code"""
  14.  
  15. if isinstance(obj, datetime):
  16. serial = obj.isoformat()
  17. return serial
  18. raise TypeError ("Type not serializable")
  19.  
  20.  
  21. iam_client = boto3.client('iam')
  22. paginator = iam_client.get_paginator('get_account_authorization_details')
  23. response_iterator = paginator.paginate()
  24.  
  25. # Annoyingly this thing is paginated so we need to visit each response and combine the results
  26. combined_response = None
  27. for response in response_iterator:
  28. if not combined_response:
  29. combined_response = response
  30. else:
  31. # Concatenate the responses
  32. combined_response['UserDetailList'].extend(response['UserDetailList'])
  33. combined_response['GroupDetailList'].extend(response['GroupDetailList'])
  34. combined_response['RoleDetailList'].extend(response['RoleDetailList'])
  35. combined_response['Policies'].extend(response['Policies'])
  36.  
  37. # If there are any unexpected keys error out since our code is probably wrong
  38. # and needs to figure out how to combine them
  39. for k in response.keys():
  40. if k not in ['UserDetailList', 'GroupDetailList', 'RoleDetailList', 'Policies', 'ResponseMetadata', 'Marker', 'IsTruncated']:
  41. raise RuntimeError('Unexpected key {0} in response'.format(k))
  42.  
  43. print(json.dumps(combined_response, default=json_serial, indent=2, sort_keys=True, ensure_ascii=True))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement