'Create a new EC2 volume with the specified parameters.
:param int size: Volume size in GiB. For provisioned IOPS volumes,
this is a minimum of 4.
:param str volume_type: The type of volume to create.
This can be \'gp2\' for General Purpose (SSD) volumes,
\'io1\' for Provisioned IOPS (SSD) volumes, or \'standard\'
for Magnetic volumes.
:param str zone: The availability zone where this volume will be
created. If not specified, the default zone of this client.
:param int iops: If creating a provisioned IOPS volume, the
The number of I/O operations per second to provision,
with a maximum ratio of 30 IOPS/GiB.
:return: The ``Volume`` representation of the created volume.'

@boto3_log
def _create_ebs_volume(self, size=1, volume_type=EBSVolumeTypes.STANDARD.value, zone=None, iops=None):

    if (zone is None):
        zone = self.zone
    client = self.connection.meta.client
    if (volume_type == EBSVolumeTypes.IO1.value):
        if (iops is None):
            iops = IOPS_MIN_IOPS
        if (size < IOPS_MIN_SIZE):
            size = IOPS_MIN_SIZE
        volume_data = client.create_volume(Size=size, AvailabilityZone=zone, VolumeType=volume_type, Iops=iops)
    else:
        volume_data = client.create_volume(Size=size, AvailabilityZone=zone, VolumeType=volume_type)
    volume = self.connection.Volume(volume_data['VolumeId'])
    volume.load()
    return volume
