':returns: item_list - list of Managed Policies.
:returns: exception_map - A dict where the keys are a tuple containing the
location of the exception and the value is the actual exception'

def slurp(self):

    self.prep_for_slurp()
    item_list = []
    exception_map = {}
    from security_monkey.common.sts_connect import connect
    for account in self.accounts:
        all_policies = []
        try:
            iam = connect(account, 'boto3.iam.resource')
            for policy in iam.policies.all():
                all_policies.append(policy)
        except Exception as e:
            exc = BotoConnectionIssue(str(e), 'iamuser', account, None)
            self.slurp_exception((self.index, account, 'universal'), exc, exception_map, source='{}-watcher'.format(self.index))
            continue
        for policy in all_policies:
            if self.check_ignore_list(policy.policy_name):
                continue
            if self.check_ignore_list(policy.arn):
                continue
            attached_users = []
            attached_roles = []
            attached_groups = []
            if (policy.attachment_count > 0):
                app.logger.debug(('Finding    attachments    for    policy    %s' % policy.policy_name))
                attached_users = [a.arn for a in policy.attached_users.all()]
                attached_roles = [a.arn for a in policy.attached_roles.all()]
                attached_groups = [a.arn for a in policy.attached_groups.all()]
            else:
                app.logger.debug(('Skipping    policy    attachment    retrieval    for    policy    %s    because    it    has    no    attachments' % policy.policy_name))
            item_config = {'name': policy.policy_name, 'arn': policy.arn, 'create_date': str(policy.create_date), 'update_date': str(policy.update_date), 'default_version_id': policy.default_version_id, 'attachment_count': policy.attachment_count, 'attached_users': attached_users, 'attached_groups': attached_groups, 'attached_roles': attached_roles, 'policy': policy.default_version.document}
            app.logger.debug(('Slurping    %s    (%s)    from    %s' % (self.i_am_singular, policy.policy_name, account)))
            arn = item_config.get('arn')
            if arn.startswith('arn:aws:iam::aws:policy'):
                arn = None
            item_list.append(ManagedPolicyItem(account=account, name=policy.policy_name, arn=arn, config=item_config))
    return (item_list, exception_map)
