def sync_role_policies()

in cartography/intel/aws/iam.py [0:0]


def sync_role_policies(neo4j_session, boto3_session, current_aws_account_id, aws_update_tag, common_job_parameters):
    logger.debug("Syncing IAM role policies for account '%s'.", current_aws_account_id)
    query = """
    MATCH (role:AWSRole)<-[:AWS_ROLE]-(AWSAccount{id: {AWS_ACCOUNT_ID}})
    WHERE exists(role.name)
    RETURN role.name AS name;
    """
    result = neo4j_session.run(query, AWS_ACCOUNT_ID=current_aws_account_id)
    roles = [r['name'] for r in result]
    roles_policies = {}
    for role_name in roles:
        roles_policies[role_name] = {}
        for policy_name in get_role_policies(boto3_session, role_name)['PolicyNames']:
            roles_policies[role_name][policy_name] = get_role_policy_info(boto3_session, role_name, policy_name)
    load_role_policies(neo4j_session, roles_policies, aws_update_tag)
    run_cleanup_job(
        'aws_import_roles_policy_cleanup.json',
        neo4j_session,
        common_job_parameters
    )