NAME
Net::Amazon::Glacier - An implementation of the Amazon Glacier RESTful API.
VERSION
Version 0.05
SYNOPSIS
This module implements the Amazon Glacier RESTful API, version 2012-06-01 (current at writing). It can be used to manage Glacier vaults and upload archives to them. Amazon Glacier is Amazon's long-term storage service.
Perhaps a little code snippet.
use Net::Amazon::Glacier;
my $glacier = Net::Amazon::Glacier->new(
'eu-west-1',
'AKIMYACCOUNTID',
'MYSECRET',
);
$glacier->create_vault( 'a_vault' );
The functions are intended to closely reflect Amazon's Glacier API. Please see Amazon's API reference for documentation of the functions: http://docs.amazonwebservices.com/amazonglacier/latest/dev/amazon-glacier-api.html.
CONSTRUCTOR
new( $region, $account_id, $secret )
VAULT OPERATORS
create_vault( $vault_name )
Creates a vault with the specified name. Returns true on success, false on failure.
delete_vault( $vault_name )
Deletes the specified vault. Returns true on success, false on failure.
describe_vault( $vault_name )
Fetches information about the specified vault. Returns a hash reference with the keys described by http://docs.amazonwebservices.com/amazonglacier/latest/dev/api-vault-get.html. Returns false on failure.
list_vaults( [$limit, [$marker] ] )
Lists the vaults. Returns a hash reference with a "marker" key, for pagination, and a "VaultList", which describes the vaults. The content of the vault list, and how $limit and $marker can be used for pagination, is described by http://docs.amazonwebservices.com/amazonglacier/latest/dev/api-vaults-get.html. Returns false on failure.
# helper functions
sub _decode_and_handle_response { my ( $self, $res ) = @_; if ( $res->is_success ) { return decode_json( $res->decoded_content ); } else { return undef; } }
sub _send_receive { my $self = shift; my $req = $self->_craft_request( @_ ); return $self->_send_request( $req ); }
sub _craft_request { my ( $self, $method, $url ) = @_; my $host = 'glacier.'.$self->{region}.'.amazonaws.com'; my $req = HTTP::Request->new( $method => 'http://' . $host . $url, [ 'x-amz-glacier-version' => '2012-06-01', 'Host' => $host, 'Date' => strftime( '%Y%m%dT%H%M%SZ', gmtime ), ] ); my $signed_req = $self->{sig}->sign( $req ); return $signed_req; }
sub _send_request { my ( $self, $req ) = @_; my $res = $self->{ua}->request( $req ); if ( $res->is_error ) { carp sprintf 'Non-successful response: %s (%s)', $res->status_line, $res->decoded_content; } return $res; }
NOT IMPLEMENTED
The following parts of Amazon's API have not been implemented in this module. This is mainly because the author hasn't had a use for them yet. If you do implement them, feel free to send me the patch.
PUT/GET/DELETE vault notifications
Archive operations
Multipart upload operations
Job operations
AUTHOR
Tim Nordenfur, <tim at gurka.se>
BUGS
Please report any bugs or feature requests to bug-net-amazon-glacier at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Net-Amazon-Glacier. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Net::Amazon::Glacier
You can also look for information at:
RT: CPAN's request tracker (report bugs here)
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
LICENSE AND COPYRIGHT
Copyright 2012 Tim Nordenfur.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.