AWS-S3

 view release on metacpan or  search on metacpan

README.markdown  view on Meta::CPAN

# NAME

AWS::S3 - Lightweight interface to Amazon S3 (Simple Storage Service)

<div>

    <a href='https://travis-ci.org/leejo/AWS-S3?branch=master'><img src='https://travis-ci.org/leejo/AWS-S3.svg?branch=master' /></a>
    <a href='https://coveralls.io/r/leejo/AWS-S3?branch=master'><img src='https://coveralls.io/repos/leejo/AWS-S3/badge.png?branch=master' alt='Coverage Status' /></a>
</div>

# SYNOPSIS

    use AWS::S3;

    my $s3 = AWS::S3->new(
      access_key_id     => 'E654SAKIASDD64ERAF0O',
      secret_access_key => 'LgTZ25nCD+9LiCV6ujofudY1D6e2vfK0R4GLsI4H',
      session_token     => 'IQob3JpJZ2luXJ2VjJEL7//////////wE...',
      region            => 'eu-west-1', # set to relevant AWS region
      honor_leading_slashes => 0, # set to allow leading slashes in bucket names, defaults to 0
    );

    # Add a bucket:
    my $bucket = $s3->add_bucket(
      name    => 'foo-bucket',
    );

    # Set the acl:
    $bucket->acl( 'private' );

    # Add a file:
    my $new_file = $bucket->add_file(
      key       => 'foo/bar.txt',
      contents  => \'This is the contents of the file',
    );

    # You can also set the contents with a coderef:
    # Coderef should eturn a reference, not the actual string of content:
    $new_file = $bucket->add_file(
      key       => 'foo/bar.txt',
      contents  => sub { return \"This is the contents" }
    );

    # Get the file:
    my $same_file = $bucket->file( 'foo/bar.txt' );

    # Get the contents:
    my $scalar_ref = $same_file->contents;
    print $$scalar_ref;

    # Update the contents with a scalar ref:
    $same_file->contents( \"New file contents" );

    # Update the contents with a code ref:
    $same_file->contents( sub { return \"New file contents" } );

    # Delete the file:
    $same_file->delete();

    # Iterate through lots of files:
    my $iterator = $bucket->files(
      page_size   => 100,
      page_number => 1,
    );
    while( my @files = $iterator->next_page )
    {
      warn "Page number: ", $iterator->page_number, "\n";
      foreach my $file ( @files )
      {
        warn "\tFilename (key): ", $file->key, "\n";
        warn "\tSize: ", $file->size, "\n";
        warn "\tETag: ", $file->etag, "\n";
        warn "\tContents: ", ${ $file->contents }, "\n";
      }# end foreach()
    }# end while()

    # You can't delete a bucket until it's empty.
    # Empty a bucket like this:
    while( my @files = $iterator->next_page )
    {
      map { $_->delete } @files;

      # Return to page 1:
      $iterator->page_number( 1 );
    }# end while()

    # Now you can delete the bucket:
    $bucket->delete();

# DESCRIPTION

AWS::S3 attempts to provide an alternate interface to the Amazon S3 Simple Storage Service.

**Disclaimer:** Several portions of AWS::S3 have been adopted from [Net::Amazon::S3](https://metacpan.org/pod/Net%3A%3AAmazon%3A%3AS3).

**NOTE:** AWS::S3 is NOT a drop-in replacement for [Net::Amazon::S3](https://metacpan.org/pod/Net%3A%3AAmazon%3A%3AS3).

**TODO:** CloudFront integration.

# CONSTRUCTOR

Call `new()` with the following parameters.

## access\_key\_id

Required.  String.

Provided by Amazon, this is your access key id.

## secret\_access\_key

Required.  String.

Provided by Amazon, this is your secret access key.



( run in 1.014 second using v1.01-cache-2.11-cpan-f56aa216473 )