.\" Automatically generated by Pod::Man 2.28 (Pod::Simple 3.29) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{ . if \nF \{ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "VM::EC2::REST::ebs 3pm" .TH VM::EC2::REST::ebs 3pm "2016-06-04" "perl v5.22.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" VM::EC2::REST::ebs \- Modules for EC2 EBS volumes .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use VM::EC2 \*(Aq:standard\*(Aq; .Ve .SH "METHODS" .IX Header "METHODS" The methods in this section allow you to query and manipulate \s-1EC2 EBS\s0 volumes and snapshots. See VM::EC2::Volume and VM::EC2::Snapshot for additional functionality provided through the object interface. .PP Implemented: AttachVolume CopySnapshot CreateSnapshot CreateVolume DeleteSnapshot DeleteVolume DescribeSnapshotAttribute DescribeSnapshots DescribeVolumes DescribeVolumeAttribute DescribeVolumeStatus DetachVolume EnableVolumeIO ModifySnapshotAttribute ModifyVolumeAttribute ResetSnapshotAttribute .PP Unimplemented: (none) .ie n .SS "@v = $ec2\->describe_volumes(\-volume_id=>\e@ids,\-filter=>\e%filters)" .el .SS "\f(CW@v\fP = \f(CW$ec2\fP\->describe_volumes(\-volume_id=>\e@ids,\-filter=>\e%filters)" .IX Subsection "@v = $ec2->describe_volumes(-volume_id=>@ids,-filter=>%filters)" .ie n .SS "@v = $ec2\->describe_volumes(@volume_ids)" .el .SS "\f(CW@v\fP = \f(CW$ec2\fP\->describe_volumes(@volume_ids)" .IX Subsection "@v = $ec2->describe_volumes(@volume_ids)" Return a series of VM::EC2::Volume objects. Optional arguments: .PP .Vb 2 \& \-volume_id The id of the volume to fetch, either a string \& scalar or an arrayref. \& \& \-filter One or more filters to apply to the search .Ve .PP The \-filter argument name can be omitted if there are no other arguments you wish to pass. .PP The full list of volume filters can be found at: http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference\-query\-DescribeVolumes.html .ie n .SS "$v = $ec2\->create_volume(\-availability_zone=>$zone,\-snapshot_id=>$snapshotId,\-size=>$size,\-volume_type=>$type,\-iops=>$iops,\-encrypted=>$boolean)" .el .SS "\f(CW$v\fP = \f(CW$ec2\fP\->create_volume(\-availability_zone=>$zone,\-snapshot_id=>$snapshotId,\-size=>$size,\-volume_type=>$type,\-iops=>$iops,\-encrypted=>$boolean)" .IX Subsection "$v = $ec2->create_volume(-availability_zone=>$zone,-snapshot_id=>$snapshotId,-size=>$size,-volume_type=>$type,-iops=>$iops,-encrypted=>$boolean)" Create a volume in the specified availability zone and return information about it. .PP Arguments: .PP .Vb 2 \& \-availability_zone \-\- An availability zone from \& describe_availability_zones (required) \& \& \-snapshot_id \-\- ID of a snapshot to use to build volume from. \& \& \-size \-\- Size of the volume, in GB (between 1 and 1024). .Ve .PP One or both of \-snapshot_id or \-size are required. For convenience, you may abbreviate \-availability_zone as \-zone, and \-snapshot_id as \&\-snapshot. .PP Optional Arguments: .PP .Vb 2 \& \-volume_type \-\- The volume type. "standard", "io1", or "gp2" \& Default is "standard" \& \& \-iops \-\- The number of I/O operations per second (IOPS) that \& the volume supports. Range is 100 to 4000. Required \& when volume type is io1. IOPS must be 30\-to\-1 ratio \& to size. ie: 3000 IOPS volume must be at least 100GB. \& \& \-encrypted \-\- Specifies whether the volume should be encrypted. \& Encrypted Amazon EBS volumes may only be attached to \& instances that support them. Volumes created from \& encrypted snapshots are also encrypted using the same \& key as the original volume. \& See: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/EBSEncryption.html .Ve .PP The returned object is a VM::EC2::Volume object. .ie n .SS "$result = $ec2\->delete_volume($volume_id);" .el .SS "\f(CW$result\fP = \f(CW$ec2\fP\->delete_volume($volume_id);" .IX Subsection "$result = $ec2->delete_volume($volume_id);" Deletes the specified volume. Returns a boolean indicating success of the delete operation. Note that a volume will remain in the \*(L"deleting\*(R" state for some time after this call completes. .ie n .SS "$attachment = $ec2\->attach_volume($volume_id,$instance_id,$device);" .el .SS "\f(CW$attachment\fP = \f(CW$ec2\fP\->attach_volume($volume_id,$instance_id,$device);" .IX Subsection "$attachment = $ec2->attach_volume($volume_id,$instance_id,$device);" .ie n .SS "$attachment = $ec2\->attach_volume(\-volume_id=>$volume_id,\-instance_id=>$instance_id,\-device=>$device);" .el .SS "\f(CW$attachment\fP = \f(CW$ec2\fP\->attach_volume(\-volume_id=>$volume_id,\-instance_id=>$instance_id,\-device=>$device);" .IX Subsection "$attachment = $ec2->attach_volume(-volume_id=>$volume_id,-instance_id=>$instance_id,-device=>$device);" Attaches the specified volume to the instance using the indicated device. All arguments are required: .PP .Vb 6 \& \-volume_id \-\- ID of the volume to attach. The volume must be in \& "available" state. \& \-instance_id \-\- ID of the instance to attach to. Both instance and \& attachment must be in the same availability zone. \& \-device \-\- How the device is exposed to the instance, e.g. \& \*(Aq/dev/sdg\*(Aq. .Ve .PP The result is a VM::EC2::BlockDevice::Attachment object which you can monitor by calling \fIcurrent_status()\fR: .PP .Vb 5 \& my $a = $ec2\->attach_volume(\*(Aqvol\-12345\*(Aq,\*(Aqi\-12345\*(Aq,\*(Aq/dev/sdg\*(Aq); \& while ($a\->current_status ne \*(Aqattached\*(Aq) { \& sleep 2; \& } \& print "volume is ready to go\en"; .Ve .PP or more simply .PP .Vb 2 \& my $a = $ec2\->attach_volume(\*(Aqvol\-12345\*(Aq,\*(Aqi\-12345\*(Aq,\*(Aq/dev/sdg\*(Aq); \& $ec2\->wait_for_attachments($a); .Ve .ie n .SS "$attachment = $ec2\->detach_volume($volume_id)" .el .SS "\f(CW$attachment\fP = \f(CW$ec2\fP\->detach_volume($volume_id)" .IX Subsection "$attachment = $ec2->detach_volume($volume_id)" .ie n .SS "$attachment = $ec2\->detach_volume(\-volume_id=>$volume_id,\-instance_id=>$instance_id, \-device=>$device, \-force=>$force);" .el .SS "\f(CW$attachment\fP = \f(CW$ec2\fP\->detach_volume(\-volume_id=>$volume_id,\-instance_id=>$instance_id, \-device=>$device, \-force=>$force);" .IX Subsection "$attachment = $ec2->detach_volume(-volume_id=>$volume_id,-instance_id=>$instance_id, -device=>$device, -force=>$force);" Detaches the specified volume from an instance. .PP .Vb 5 \& \-volume_id \-\- ID of the volume to detach. (required) \& \-instance_id \-\- ID of the instance to detach from. (optional) \& \-device \-\- How the device is exposed to the instance. (optional) \& \-force \-\- Force detachment, even if previous attempts were \& unsuccessful. (optional) .Ve .PP The result is a VM::EC2::BlockDevice::Attachment object which you can monitor by calling \fIcurrent_status()\fR: .PP .Vb 5 \& my $a = $ec2\->detach_volume(\*(Aqvol\-12345\*(Aq); \& while ($a\->current_status ne \*(Aqdetached\*(Aq) { \& sleep 2; \& } \& print "volume is ready to go\en"; .Ve .PP Or more simply: .PP .Vb 3 \& my $a = $ec2\->detach_volume(\*(Aqvol\-12345\*(Aq); \& $ec2\->wait_for_attachments($a); \& print "volume is ready to go\en" if $a\->current_status eq \*(Aqdetached\*(Aq; .Ve .ie n .SS "$ec2\->wait_for_attachments(@attachment)" .el .SS "\f(CW$ec2\fP\->wait_for_attachments(@attachment)" .IX Subsection "$ec2->wait_for_attachments(@attachment)" Wait for all members of the provided list of VM::EC2::BlockDevice::Attachment objects to reach some terminal state (\*(L"attached\*(R" or \*(L"detached\*(R"), and then return a hash reference that maps each attachment to its final state. .PP Typical usage: .PP .Vb 9 \& my $i = 0; \& my $instance = \*(Aqi\-12345\*(Aq; \& my @attach; \& foreach (@volume) { \& push @attach,$_\->attach($instance,\*(Aq/dev/sdf\*(Aq.$i++; \& } \& my $s = $ec2\->wait_for_attachments(@attach); \& my @failed = grep($s\->{$_} ne \*(Aqattached\*(Aq} @attach; \& warn "did not attach: ",join \*(Aq, \*(Aq,@failed; .Ve .PP If no terminal state is reached within a set timeout, then this method returns undef and sets \f(CW$ec2\fR\->\fIerror_str()\fR to a suitable message. The timeout, which defaults to 10 minutes (600 seconds), can be get or set with \f(CW$ec2\fR\->\fIwait_for_timeout()\fR. .ie n .SS "@v = $ec2\->describe_volume_status(@volume_ids)" .el .SS "\f(CW@v\fP = \f(CW$ec2\fP\->describe_volume_status(@volume_ids)" .IX Subsection "@v = $ec2->describe_volume_status(@volume_ids)" .ie n .SS "@v = $ec2\->describe_volume_status(\e%filters)" .el .SS "\f(CW@v\fP = \f(CW$ec2\fP\->describe_volume_status(\e%filters)" .IX Subsection "@v = $ec2->describe_volume_status(%filters)" .ie n .SS "@v = $ec2\->describe_volume_status(\-volume_id=>\e@ids,\-filter=>\e%filters)" .el .SS "\f(CW@v\fP = \f(CW$ec2\fP\->describe_volume_status(\-volume_id=>\e@ids,\-filter=>\e%filters)" .IX Subsection "@v = $ec2->describe_volume_status(-volume_id=>@ids,-filter=>%filters)" Return a series of VM::EC2::Volume::StatusItem objects. Optional arguments: .PP .Vb 2 \& \-volume_id The id of the volume to fetch, either a string \& scalar or an arrayref. \& \& \-filter One or more filters to apply to the search \& \& \-max_results Maximum number of items to return (must be more than \& 5). .Ve .PP The \-filter argument name can be omitted if there are no other arguments you wish to pass. .PP The full list of volume filters can be found at: http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference\-query\-DescribeVolumeStatus.html .PP If \-max_results is specified, then the call will return at most the number of volume status items you requested. You may see whether there are additional results by calling \fImore_volume_status()\fR, and then retrieve the next set of results with additional call(s) to \&\fIdescribe_volume_status()\fR: .PP .Vb 6 \& my @results = $ec2\->describe_volume_status(\-max_results => 10); \& do_something(\e@results); \& while ($ec2\->more_volume_status) { \& @results = $ec2\->describe_volume_status; \& do_something(\e@results); \& } .Ve .ie n .SS "$ec2\->wait_for_volumes(@volumes)" .el .SS "\f(CW$ec2\fP\->wait_for_volumes(@volumes)" .IX Subsection "$ec2->wait_for_volumes(@volumes)" Wait for all members of the provided list of volumes to reach some terminal state (\*(L"available\*(R", \*(L"in-use\*(R", \*(L"deleted\*(R" or \*(L"error\*(R"), and then return a hash reference that maps each volume \s-1ID\s0 to its final state. .PP If no terminal state is reached within a set timeout, then this method returns undef and sets \f(CW$ec2\fR\->\fIerror_str()\fR to a suitable message. The timeout, which defaults to 10 minutes (600 seconds), can be get or set with \f(CW$ec2\fR\->\fIwait_for_timeout()\fR. .ie n .SS "@data = $ec2\->describe_volume_attribute($volume_id,$attribute)" .el .SS "\f(CW@data\fP = \f(CW$ec2\fP\->describe_volume_attribute($volume_id,$attribute)" .IX Subsection "@data = $ec2->describe_volume_attribute($volume_id,$attribute)" This method returns volume attributes. Only one attribute can be retrieved at a time. The following is the list of attributes that can be retrieved: .PP .Vb 2 \& autoEnableIO \-\- boolean \& productCodes \-\- list of scalar .Ve .PP These values can be retrieved more conveniently from the VM::EC2::Volume object returned from \fIdescribe_volumes()\fR: .PP .Vb 2 \& $volume\->auto_enable_io(1); \& @codes = $volume\->product_codes; .Ve .ie n .SS "$boolean = $ec2\->enable_volume_io($volume_id)" .el .SS "\f(CW$boolean\fP = \f(CW$ec2\fP\->enable_volume_io($volume_id)" .IX Subsection "$boolean = $ec2->enable_volume_io($volume_id)" .ie n .SS "$boolean = $ec2\->enable_volume_io(\-volume_id=>$volume_id)" .el .SS "\f(CW$boolean\fP = \f(CW$ec2\fP\->enable_volume_io(\-volume_id=>$volume_id)" .IX Subsection "$boolean = $ec2->enable_volume_io(-volume_id=>$volume_id)" Given the \s-1ID\s0 of a volume whose I/O has been disabled (e.g. due to hardware degradation), this method will re-enable the I/O and return true if successful. .ie n .SS "@snaps = $ec2\->describe_snapshots(@snapshot_ids)" .el .SS "\f(CW@snaps\fP = \f(CW$ec2\fP\->describe_snapshots(@snapshot_ids)" .IX Subsection "@snaps = $ec2->describe_snapshots(@snapshot_ids)" .ie n .SS "@snaps = $ec2\->describe_snapshots(\-snapshot_id=>\e@ids,%other_args)" .el .SS "\f(CW@snaps\fP = \f(CW$ec2\fP\->describe_snapshots(\-snapshot_id=>\e@ids,%other_args)" .IX Subsection "@snaps = $ec2->describe_snapshots(-snapshot_id=>@ids,%other_args)" Returns a series of VM::EC2::Snapshot objects. All arguments are optional: .PP .Vb 1 \& \-snapshot_id ID of the snapshot \& \& \-owner Filter by owner ID \& \& \-restorable_by Filter by IDs of a user who is allowed to restore \& the snapshot \& \& \-filter Tags and other filters .Ve .PP The \-filter argument name can be omitted if there are no other arguments you wish to pass. .PP The full list of applicable filters can be found at http://docs.amazonwebservices.com/AWSEC2/latest/APIReference/ApiReference\-query\-DescribeSnapshots.html .ie n .SS "@data = $ec2\->describe_snapshot_attribute($snapshot_id,$attribute)" .el .SS "\f(CW@data\fP = \f(CW$ec2\fP\->describe_snapshot_attribute($snapshot_id,$attribute)" .IX Subsection "@data = $ec2->describe_snapshot_attribute($snapshot_id,$attribute)" This method returns snapshot attributes. The first argument is the snapshot \s-1ID,\s0 and the second is the name of the attribute to fetch. Currently Amazon defines two attributes: .PP .Vb 3 \& createVolumePermission \-\- return a list of user Ids who are \& allowed to create volumes from this snapshot. \& productCodes \-\- product codes for this snapshot .Ve .PP The result is a raw hash of attribute values. Please see VM::EC2::Snapshot for a more convenient way of accessing and modifying snapshot attributes. .ie n .SS "$boolean = $ec2\->modify_snapshot_attribute($snapshot_id,\-$argument=>$value)" .el .SS "\f(CW$boolean\fP = \f(CW$ec2\fP\->modify_snapshot_attribute($snapshot_id,\-$argument=>$value)" .IX Subsection "$boolean = $ec2->modify_snapshot_attribute($snapshot_id,-$argument=>$value)" This method changes snapshot attributes. The first argument is the snapshot \s-1ID,\s0 and this is followed by an attribute modification command and the value to change it to. .PP Currently the only attribute that can be changed is the createVolumeAttribute. This is done through the following arguments .PP .Vb 5 \& \-createvol_add_user \-\- scalar or arrayref of UserIds to grant create volume permissions to \& \-createvol_add_group \-\- scalar or arrayref of Groups to remove create volume permissions from \& (only currently valid value is "all") \& \-createvol_remove_user \-\- scalar or arrayref of UserIds to remove from create volume permissions \& \-createvol_remove_group \-\- scalar or arrayref of Groups to remove from create volume permissions .Ve .PP You can abbreviate these to \-add_user, \-add_group, \-remove_user, \-remove_group, etc. .PP See VM::EC2::Snapshot for more convenient methods for interrogating and modifying the create volume permissions. .ie n .SS "$boolean = $ec2\->reset_snapshot_attribute($snapshot_id,$attribute)" .el .SS "\f(CW$boolean\fP = \f(CW$ec2\fP\->reset_snapshot_attribute($snapshot_id,$attribute)" .IX Subsection "$boolean = $ec2->reset_snapshot_attribute($snapshot_id,$attribute)" This method resets an attribute of the given snapshot to its default value. The only valid attribute at this time is \&\*(L"createVolumePermission.\*(R" .ie n .SS "$snapshot = $ec2\->create_snapshot($volume_id)" .el .SS "\f(CW$snapshot\fP = \f(CW$ec2\fP\->create_snapshot($volume_id)" .IX Subsection "$snapshot = $ec2->create_snapshot($volume_id)" .ie n .SS "$snapshot = $ec2\->create_snapshot(\-volume_id=>$vol,\-description=>$desc)" .el .SS "\f(CW$snapshot\fP = \f(CW$ec2\fP\->create_snapshot(\-volume_id=>$vol,\-description=>$desc)" .IX Subsection "$snapshot = $ec2->create_snapshot(-volume_id=>$vol,-description=>$desc)" Snapshot the \s-1EBS\s0 volume and store it to S3 storage. To ensure a consistent snapshot, the volume should be unmounted prior to initiating this operation. .PP Arguments: .PP .Vb 1 \& \-volume_id \-\- ID of the volume to snapshot (required) \& \& \-description \-\- A description to add to the snapshot (optional) .Ve .PP The return value is a VM::EC2::Snapshot object that can be queried through its \fIcurrent_status()\fR interface to follow the progress of the snapshot operation. .PP Another way to accomplish the same thing is through the VM::EC2::Volume interface: .PP .Vb 6 \& my $volume = $ec2\->describe_volumes(\-filter=>{\*(Aqtag:Name\*(Aq=>\*(AqAccountingData\*(Aq}); \& $s = $volume\->create_snapshot("Backed up at ".localtime); \& while ($s\->current_status eq \*(Aqpending\*(Aq) { \& print "Progress: ",$s\->progress,"% done\en"; \& } \& print "Snapshot status: ",$s\->current_status,"\en"; .Ve .ie n .SS "$boolean = $ec2\->delete_snapshot($snapshot_id)" .el .SS "\f(CW$boolean\fP = \f(CW$ec2\fP\->delete_snapshot($snapshot_id)" .IX Subsection "$boolean = $ec2->delete_snapshot($snapshot_id)" Delete the indicated snapshot and return true if the request was successful. .ie n .SS "$snapshot = $ec2\->copy_snapshot(\-source_region=>$region,\-source_snapshot_id=>$id,\-description=>$desc)" .el .SS "\f(CW$snapshot\fP = \f(CW$ec2\fP\->copy_snapshot(\-source_region=>$region,\-source_snapshot_id=>$id,\-description=>$desc)" .IX Subsection "$snapshot = $ec2->copy_snapshot(-source_region=>$region,-source_snapshot_id=>$id,-description=>$desc)" .ie n .SS "$snapshot = $ec2\->copy_snapshot(\-region=>$region,\-snapshot_id=>$id,\-description=>$desc)" .el .SS "\f(CW$snapshot\fP = \f(CW$ec2\fP\->copy_snapshot(\-region=>$region,\-snapshot_id=>$id,\-description=>$desc)" .IX Subsection "$snapshot = $ec2->copy_snapshot(-region=>$region,-snapshot_id=>$id,-description=>$desc)" Copies an existing snapshot within the same region or from one region to another. .PP Required arguments: .PP .Vb 2 \& \-source_region \-\- The region the existing snapshot to copy resides in \& \-source_snapshot_id \-\- The snapshot ID of the snapshot to copy \& \& \-region \-\- Alias for \-source_region \& \-snapshot_id \-\- Alias for \-source_snapshot_id .Ve .PP Currently, the DestinationRegion and PresignedUrl \s-1API\s0 arguments are not supported. Therefore, copying encrypted snapshots between regions is not yet possible. .PP Optional arguments: .PP .Vb 1 \& \-description \-\- A description of the new snapshot .Ve .PP The return value is a VM::EC2::Snapshot object that can be queried through its \fIcurrent_status()\fR interface to follow the progress of the snapshot operation. .ie n .SS "$ec2\->wait_for_snapshots(@snapshots)" .el .SS "\f(CW$ec2\fP\->wait_for_snapshots(@snapshots)" .IX Subsection "$ec2->wait_for_snapshots(@snapshots)" Wait for all members of the provided list of snapshots to reach some terminal state (\*(L"completed\*(R", \*(L"error\*(R"), and then return a hash reference that maps each snapshot \s-1ID\s0 to its final state. .PP This method may potentially wait forever. It has no set timeout. Wrap it in an eval{} and set \fIalarm()\fR if you wish to timeout. .SH "SEE ALSO" .IX Header "SEE ALSO" \&\s-1VM::EC2\s0 .SH "AUTHOR" .IX Header "AUTHOR" Lincoln Stein . .PP Copyright (c) 2011 Ontario Institute for Cancer Research .PP This package and its accompanying libraries is free software; you can redistribute it and/or modify it under the terms of the \s-1GPL \s0(either version 1, or at your option, any later version) or the Artistic License 2.0. Refer to \s-1LICENSE\s0 for the full license text. In addition, please see \s-1DISCLAIMER\s0.txt for disclaimers of warranty.