class AWS::EC2::SnapshotCollection

Represents a collection of Amazon EBS snapshots. Typically you should get an instance of this class by calling {EC2#snapshots}.

@example Create a snapshot from a volume

ec2.snapshots.create(:volume => ec2.volumes["vol-123"],
                     :description => "my snapshot")
# or:
ec2.volumes["vol-123"].create_snapshot("my snapshot")

@example Get a snapshot by ID

snapshot = ec2.snapshots["vol-123"]
snapshot.exists?

@example Get a map of snapshot IDs to snapshot status

ec2.snapshots.inject({}) { |m, s| m[s.id] = s.status; m }
# => { "snap-12345678" => :pending, "snap-87654321" => :completed }

Public Class Methods

new(options = {}) click to toggle source

@api private

Calls superclass method AWS::EC2::FilteredCollection.new
# File lib/aws/ec2/snapshot_collection.rb, line 39
def initialize(options = {})
  @owners = options[:owners] || []
  @restorable_by = options[:restorable_by] || []
  super(options)
end

Public Instance Methods

create(opts = {}) click to toggle source

Creates a snapshot of an Amazon EBS volume and stores it in Amazon S3. You can use snapshots for backups, to make identical copies of instance devices, and to save data before shutting down an instance. For more information about Amazon EBS, go to the [Amazon Elastic Compute Cloud User Guide](docs.aws.amazon.com/AWSEC2/latest/UserGuide/index.html?using-ebs.html).

@return [Snapshot] An object representing the new snapshot.

@param [Hash] opts Options for creating the snapshot.

Either `:volume` or `:volume_id` is required.

@option opts [Volume] :volume The Amazon EBS volume of which

to take a snapshot.

@option opts [String] :volume_id The ID of the Amazon EBS

volume of which to take a snapshot.

@option opts [String] :description An optional description of

the snapshot.  May contain up to 255 characters.

@return [Snapshot]

# File lib/aws/ec2/snapshot_collection.rb, line 108
def create opts = {}
  if volume = opts.delete(:volume)
    opts[:volume_id] = volume.id
  end
  resp = client.create_snapshot(opts)
  Snapshot.new(resp.snapshot_id, :config => config)
end
each() { |snapshot| ... } click to toggle source

@yield [Snapshot] Yields each snapshot in the collection. @return [nil]

# File lib/aws/ec2/snapshot_collection.rb, line 47
def each(&block)
  opts = {}
  opts[:owner_ids] = @owners.map { |id| id.to_s } unless @owners.empty?
  opts[:restorable_by_user_ids] = @restorable_by.map { |id| id.to_s } unless
    @restorable_by.empty?
  resp = filtered_request(:describe_snapshots, opts)
  resp[:snapshot_set].each do |details|
    snapshot = Snapshot.new_from(:describe_snapshots, details,
      details[:snapshot_id], :config => config)
    yield(snapshot)
  end
  nil
end
restorable_by(*users) click to toggle source

@return [ImageCollection] A new collection that only includes

images for which the specified user ID has explicit launch
permissions. The user ID can be an AWS account ID, `:self`
to return AMIs for which the sender of the request has
explicit launch permissions, or `:all` to return AMIs with
public launch permissions.

@param [Array of Strings] users The AWS account IDs by which

the new collection should be filtered.
# File lib/aws/ec2/snapshot_collection.rb, line 82
def restorable_by(*users)
  collection_with(:restorable_by => @restorable_by + users)
end
with_owner(*owners) click to toggle source

@return [SnapshotCollection] A new collection that only

includes snapshots owned by one or more of the specified AWS
accounts.  The IDs `:amazon` and `:self` can be used to
include snapshots owned by Amazon or AMIs owned by you,
respectively.

@param [Array of Strings] owners The AWS account IDs by

which the new collection should be filtered.
# File lib/aws/ec2/snapshot_collection.rb, line 69
def with_owner(*owners)
  collection_with(:owners => @owners + owners)
end

Protected Instance Methods

member_class() click to toggle source

@api private

# File lib/aws/ec2/snapshot_collection.rb, line 118
def member_class
  Snapshot
end
preserved_options() click to toggle source

@api private

# File lib/aws/ec2/snapshot_collection.rb, line 124
def preserved_options
  super.merge(:owners => @owners, :restorable_by => @restorable_by)
end