Create an EBS Volume using an availability-zone and size_or_snap
        parameter, encrypted by default.
        If the volume is crated from a snapshot, (str)size_or_snap denotes
        the snapshot id. Otherwise, (int)size_or_snap denotes the amount of
        GiB's to allocate. iops must be set if the volume type is io1.

def create(self, az, size_or_snap, volume_type=None, iops=None,
               encrypted=True):
        """Create an EBS Volume using an availability-zone and size_or_snap
        parameter, encrypted by default.
        If the volume is crated from a snapshot, (str)size_or_snap denotes
        the snapshot id. Otherwise, (int)size_or_snap denotes the amount of
        GiB's to allocate. iops must be set if the volume type is io1.
        """
        kwargs = {}
        kwargs['encrypted'] = encrypted
        if volume_type:
            kwargs['VolumeType'] = volume_type
        if iops:
            kwargs['Iops'] = iops
        is_snapshot_id = False
        try:
            size_or_snap = int(size_or_snap)
        except ValueError:
            is_snapshot_id = True
        if is_snapshot_id:
            return self.call("CreateVolume", AvailabilityZone=az,
                             SnapshotId=size_or_snap, **kwargs)
        return self.call("CreateVolume", AvailabilityZone=az,
                         Size=size_or_snap, **kwargs)