def volumes(options = {})
      batches = Enumerator.new do |y|
        resp = @client.describe_volumes(options)
        resp.each_page do |page|
          batch = []
          page.data.volumes.each do |v|
            batch << Volume.new(
              id: v.volume_id,
              data: v,
              client: @client
            )
          end
          y.yield(batch)
        end
      end
      Volume::Collection.new(batches)
    end
def volumes(options = {})
      batches = Enumerator.new do |y|
        resp = @client.describe_volumes(options)
        resp.each_page do |page|
          batch = []
          page.data.volumes.each do |v|
            batch << Volume.new(
              id: v.volume_id,
              data: v,
              client: @client
            )
          end
          y.yield(batch)
        end
      end
      Volume::Collection.new(batches)
    end
@example Request syntax with placeholder values

   volumes = ec2.volumes({
     filters: [
       {
         name: "String",
         values: ["String"],
       },
     ],
     volume_ids: ["String"],
     dry_run: false,
   })
 @param [Hash] options ({})
 @option options [Array<Types::Filter>] :filters
   The filters.

   * `attachment.attach-time` - The time stamp when the attachment
     initiated.

   * `attachment.delete-on-termination` - Whether the volume is deleted
     on instance termination.

   * `attachment.device` - The device name specified in the block device
     mapping (for example, `/dev/sda1`).

   * `attachment.instance-id` - The ID of the instance the volume is
     attached to.

   * `attachment.status` - The attachment state (`attaching` \|
     `attached` \| `detaching`).

   * `availability-zone` - The Availability Zone in which the volume was
     created.

   * `create-time` - The time stamp when the volume was created.

   * `encrypted` - Indicates whether the volume is encrypted (`true` \|
     `false`)

   * `size` - The size of the volume, in GiB.

   * `snapshot-id` - The snapshot from which the volume was created.

   * `status` - The status of the volume (`creating` \| `available` \|
     `in-use` \| `deleting` \| `deleted` \| `error`).

   * `tag`\:&lt;key&gt; - The key/value combination of a tag assigned to
     the resource. Use the tag key in the filter name and the tag value
     as the filter value. For example, to find all resources that have a
     tag with the key `Owner` and the value `TeamA`, specify `tag:Owner`
     for the filter name and `TeamA` for the filter value.

   * `tag-key` - The key of a tag assigned to the resource. Use this
     filter to find all resources assigned a tag with a specific key,
     regardless of the tag value.

   * `volume-id` - The volume ID.

   * `volume-type` - The Amazon EBS volume type. This can be `gp2` for
     General Purpose SSD, `io1` for Provisioned IOPS SSD, `st1` for
     Throughput Optimized HDD, `sc1` for Cold HDD, or `standard` for
     Magnetic volumes.
 @option options [Array<String>] :volume_ids
   The volume IDs.
 @option options [Boolean] :dry_run
   Checks whether you have the required permissions for the action,
   without actually making the request, and provides an error response.
   If you have the required permissions, the error response is
   `DryRunOperation`. Otherwise, it is `UnauthorizedOperation`.
 @return [Volume::Collection]