The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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:

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.