'List availability zones in the given region or the current region.
:keyword region_id: the id of the region to query zones from
:type region_id: ``str``
:return: list of zones
:rtype: ``list`` of ``ECSZone``'

def ex_list_zones(self, region_id=None):

    params = {'Action': 'DescribeZones'}
    if region_id:
        params['RegionId'] = region_id
    else:
        params['RegionId'] = self.region
    resp_body = self.connection.request(self.path, params).object
    zone_elements = findall(resp_body, 'Zones/Zone', namespace=self.namespace)
    zones = [self._to_zone(el) for el in zone_elements]
    return zones
