You are viewing documentation for version 1 of the AWS SDK for Ruby. Version 2 documentation can be found here.

Class: AWS::EC2::VolumeCollection

Inherits:
Collection show all
Includes:
TaggedCollection
Defined in:
lib/aws/ec2/volume_collection.rb

Overview

Represents a collection of Amazon EBS volumes. Typically you should get an instance of this class by calling #volumes.

Examples:

Create an empty 15GiB volume

ec2.volumes.create(:size => 15, :availability_zone => "us-west-2a")

Get a volume by ID

volume = ec2.volumes["vol-123"]
volume.exists?

Get a map of volume IDs to volume status

ec2.volumes.inject({}) { |m, v| m[v.id] = v.status; m }
# => { "vol-12345678" => :available, "vol-87654321" => :in_use }

Instance Method Summary collapse

Methods included from TaggedCollection

#tagged, #tagged_values, #with_tag

Methods inherited from Collection

#[]

Methods included from FilteredCollection

#filter, #initialize

Instance Method Details

#create(options = {}) ⇒ Volume

Creates a new Amazon EBS volume that any Amazon EC2 instance in the same Availability Zone can attach to. For more information about Amazon EBS, go to the Amazon Elastic Compute Cloud User Guide.

Parameters:

  • options (Hash) (defaults to: {})

    Options for creating the volume. :availability_zone and one of :size, :snapshot, or :snapshot_id is required.

Options Hash (options):

  • :size (Integer)

    The size of the volume, in GiBs. Valid values: 1 - 1024. If :snapshot or :snapshot_id is specified, this defaults to the size of the specified snapshot.

  • :snapshot (Snapshot)

    The snapshot from which to create the new volume.

  • :snapshot_id (String)

    The ID of the snapshot from which to create the new volume.

  • :availability_zone (String, AvailabilityZone)

    The Availability Zone in which to create the new volume. To get a list of the availability zones you can use, see AWS::EC2#availability_zones.

  • :iops (String)
  • :volume_type (String)
  • :encrypted (Boolean) — default: false

    When true, the volume will be encrypted. For more information, refer to Amazon EBS Encryption

Returns:

  • (Volume)

    An object representing the new volume.

  • (Volume)


85
86
87
88
89
90
91
# File 'lib/aws/ec2/volume_collection.rb', line 85

def create options = {}
  if snapshot = options.delete(:snapshot)
    options[:snapshot_id] = snapshot.id
  end
  resp = client.create_volume(options)
  Volume.new_from(:create_volume, resp, resp.volume_id, :config => config)
end

#each {|Volume| ... } ⇒ nil

Yields:

  • (Volume)

    Yields each volume in the collection.

Returns:

  • (nil)


36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/aws/ec2/volume_collection.rb', line 36

def each(&block)
  resp = filtered_request(:describe_volumes)
  resp.volume_set.each do |v|

    volume = Volume.new_from(:describe_volumes, v,
      v.volume_id, :config => config)

    yield(volume)

  end
  nil
end