List, with moderate information, all CloudFront distributions in the bound account.

    region
        Region to connect to.

    key
        Secret key to use.

    keyid
        Access key to use.

    profile
        Dict, or pillar key pointing to a dict, containing AWS region/key/keyid.

    CLI Example:

    .. code-block:: bash

        salt myminion boto_cloudfront.list_distributions

def list_distributions(region=None, key=None, keyid=None, profile=None):
    '''
    List, with moderate information, all CloudFront distributions in the bound account.

    region
        Region to connect to.

    key
        Secret key to use.

    keyid
        Access key to use.

    profile
        Dict, or pillar key pointing to a dict, containing AWS region/key/keyid.

    CLI Example:

    .. code-block:: bash

        salt myminion boto_cloudfront.list_distributions

    '''
    retries = 10
    sleep = 6
    conn = _get_conn(region=region, key=key, keyid=keyid, profile=profile)
    Items = []
    while retries:
        try:
            log.debug('Garnering list of CloudFront distributions')
            Marker = ''
            while Marker is not None:
                ret = conn.list_distributions(Marker=Marker)
                Items += ret.get('DistributionList', {}).get('Items', [])
                Marker = ret.get('DistributionList', {}).get('NextMarker')
            return Items
        except botocore.exceptions.ParamValidationError as err:
            raise SaltInvocationError(str(err))
        except botocore.exceptions.ClientError as err:
            if retries and err.response.get('Error', {}).get('Code') == 'Throttling':
                retries -= 1
                log.debug('Throttled by AWS API, retrying in %s seconds...', sleep)
                time.sleep(sleep)
                continue
            log.error('Failed to list CloudFront distributions: %s', err.message)
            return None