#!/usr/bin/python3 import boto3 import json def list_custom_iam_policies(): # Create an IAM client iam = boto3.client('iam') # Initialize a paginator paginator = iam.get_paginator('list_policies') # List of custom policies custom_policies = [] # Iterate through all pages of policies for page in paginator.paginate(Scope='Local'): for policy in page['Policies']: if policy['PolicyName'] != 'AWSManaged': policy_version = iam.get_policy_version( PolicyArn=policy['Arn'], VersionId=policy['DefaultVersionId'] ) custom_policies.append({ 'PolicyName': policy['PolicyName'], 'PolicyArn': policy['Arn'], 'PolicyDocument': json.dumps(policy_version['PolicyVersion']['Document'], indent=2, separators=(',', ': ')) }) return custom_policies if __name__ == "__main__": custom_iam_policies = list_custom_iam_policies() for policy in custom_iam_policies: print(f"Policy Name: {policy['PolicyName']}") print(f"Policy ARN: {policy['PolicyArn']}") print("Policy Document:") print(policy['PolicyDocument']) print("=" * 40)