VM::EC2::Volume3pm
Object describing an amazon ebs volume
Usage
use VM::EC2;$ec2 = VM::EC2->new(...);@vol = $ec2->describe_volumes;for my $vol (@vols) {$id = $vol->volumeId;$size = $vol->size;$snap = $vol->snapshotId;$zone = $vol->availabilityZone;$status = $vol->status;$ctime = $vol->createTime;@attachments = $vol->attachments;$attachment = $vol->attachment;$origin = $vol->from_snapshot;@snapshots = $vol->to_snapshots;}$vols[0]->attach('i-12345','/dev/sdg1');$vols[0]->deleteOnTermination('true');$vols[0]->detach;$vols[0]->create_snapshot('automatic snapshot')
Overview
This object is used to describe an Amazon EBS volume. It is returned by VM::EC2->describe_volumes().
Methods
The following object methods are supported:
volumeId -- ID of this volume.size -- Size of this volume (in GB).snapshotId -- ID of snapshot this volume was created from.availabilityZone -- Availability zone in which this volume resides.status -- Volume state, one of "creating", "available","in-use", "deleting", "deleted", "error"createTime -- Timestamp for when volume was created.volumeType -- The volume type, one of "standard", "io1", or "gp2"iops -- The number of I/O operations per second that the volumesupports, an integer between 100 and 4000. Only valid forvolumes of type "io1".encrypted -- True if volume is encrypted.tags -- Hashref containing tags associated with this group.See L<VM::EC2::Generic>.
In addition, this class provides several convenience functions:
$attachment = $vol->attachment
@attachments = $vol->attachments
The attachment() method returns a VM::EC2::BlockDevice::Attachment object describing the attachment of this volume to an instance. If the volume is unused, then this returns undef.
The attachments() method is similar, except that it returns a list of the attachments. Currently an EBS volume can only be attached to one instance at a time, but the Amazon call syntax supports multiple attachments and this method is provided for future compatibility.
$attachment = $vol->attach($instance,$device)
$attachment = $vol->attach(-instance_id=>$instance,-device=>$device)
Attach this volume to an instance using virtual device $device. Both arguments are required. The result is a VM::EC2::BlockDevice::Attachment object which you can monitor by calling current_status():
my $a = $volume->attach('i-12345','/dev/sdg');while ($a->current_status ne 'attached') {sleep 2;}print "volume is ready to go\n";
$attachment = $volume->detach()
$attachment = $volume->detach(-instance_id=>$instance_id, -device=>$device, -force=>$force);
Detaches this volume. With no arguments, will detach the volume from whatever instance it is currently attached to. Provide -instance_id and/or -device as a check that you are detaching the volume from the expected instance and device.
Optional arguments:
-instance_id -- ID of the instance to detach from.-device -- How the device is exposed to the instance.-force -- Force detachment, even if previous attempts wereunsuccessful.
The result is a VM::EC2::BlockDevice::Attachment object which you can monitor by calling current_status():
my $a = $volume->detach;while ($a->current_status ne 'detached') {sleep 2;}print "volume is ready to go\n";
$boolean = $vol->deleteOnTermination([$boolean])
Get or set the deleteOnTermination flag for attached volumes. If the volume is unattached, then this causes a fatal error. Called with no arguments, this method returns the current state of the deleteOnTermination flag for the volume's attachment. Called with a true/false argument, the method sets the flag by calling modify_instance_attributes() on the corresponding instance and returns true if successful.
$snap = $vol->from_snapshot
Returns the VM::EC2::Snapshot object that this volume was originally derived from. It will return undef if the resource no longer exists, or if the volume was created from scratch.
@snap = $vol->to_snapshots
If this volume has been used to create one or more snapshots, this method will return them as a list of VM::EC2::Snapshot objects.
$snapshot = $vol->create_snapshot('Description')
Create a snapshot of the volume and return a VM::EC2::Snapshot object. To ensure a consistent snapshot, you should unmount the volume before snapshotting it. The optional argument allows you to add a description to the snapshot.
Here is an example:
$s = $volume->create_snapshot("Backed up at ".localtime);while ($s->current_status eq 'pending') {print "Progress: ",$s->progress,"% done\n";}print "Snapshot status: ",$s->current_status,"\n";
$status = $vol->current_status
This returns the up-to-date status of the volume. It works by calling refresh() and then returning status().
$boolean = $vol->auto_enable_io([$new_boolean])
Get or set the auto-enable IO flag.
$boolean = $vol->enable_volume_io()
Enable volume I/O after it has been disabled by an Amazon health check. If successful, the call will return true.
String overloading
When used in a string context, this object will interpolate the volumeId.
Releases
6 releases since Debian 8 (Jessie); the text changed 3 times.