Python 具有Boto3附加策略的所有角色的列表

Python 具有Boto3附加策略的所有角色的列表,python,amazon-web-services,boto3,Python,Amazon Web Services,Boto3,在此处找到一个有用的线程,该线程帮助我获取脚本的一部分,以获取所有角色及其附加策略的列表: response = client.list_attached_role_policies( RoleName='MyRoleName' ) 我正试图找出如何使这项工作,所以我得到了我们的AWS帐户中的所有角色及其附加政策的列表。我对Python/Boto3非常陌生,因此非常感谢您提供的任何帮助您应该能够执行以下操作: 导入boto3 从输入import Dict开始,列出 client=bot3.

在此处找到一个有用的线程,该线程帮助我获取脚本的一部分,以获取所有角色及其附加策略的列表:

response = client.list_attached_role_policies(
  RoleName='MyRoleName'
)

我正试图找出如何使这项工作,所以我得到了我们的AWS帐户中的所有角色及其附加政策的列表。我对Python/Boto3非常陌生,因此非常感谢您提供的任何帮助

您应该能够执行以下操作:

导入boto3
从输入import Dict开始,列出
client=bot3.client('iam')
def get_role_names()->List[str]:
“”“通过对列表_roles()调用分页来检索角色名列表”“”
角色=[]
role\u paginator=client.get\u paginator('list\u roles'))
对于角色_paginator.paginate()中的响应:
response_role_names=[r.get('RoleName')表示r在response['Roles']
roles.extend(响应\角色\名称)
返回角色
def get_policies_for_roles(角色名称:List[str])->Dict[str,List[Dict[str,str]]:
“”“创建角色名称及其所附加的任何策略的映射。”
在列表_attached _role _policies()上分页会调用每个角色名称。
随附保单将包括保单名称和ARN。
"""
策略映射={}
policy\u paginator=client.get\u paginator('list\u attached\u role\u policies'))
对于角色“”名称中的名称:
角色_策略=[]
对于policy_paginator.paginate(RoleName=name)中的响应:
角色_policies.extend(response.get('AttachedPolicies'))
policy_map.update({name:role_policies})
退货政策图
角色名称=获取角色名称()
附加的角色策略=获取角色的策略(角色名称)

paginators应该有助于处理角色/策略可能超过AWS规定的每个响应限制的情况。和往常一样,编程有很多不同的方法,但这是一种方法。

太棒了,谢谢。有什么方法可以实现打印功能吗?我运行了它,它返回为空白。@Lombahdo-您应该能够在最后打印(附加的角色策略)。如果您想要更漂亮的输出,您可以导入json,那么json.dumps(附加的角色策略,缩进=2,排序键=True)非常感谢您帮助了一个新家伙。是的,我确实使用了打印功能,我会看看是否能让它看起来合适。非常感谢。@Lombahdo如果答案是有帮助的,那么接受它是很好的做法。