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::S3::Client - An easy-to-use Amazon S3 client

VERSION

version 0.991

SYNOPSIS

# Build Client instance
my $client = Net::Amazon::S3::Client->new (
	# accepts all Net::Amazon::S3's arguments
	aws_access_key_id     => $aws_access_key_id,
	aws_secret_access_key => $aws_secret_access_key,
	retry                 => 1,
);

# or reuse an existing S3 connection
my $client = Net::Amazon::S3::Client->new (s3 => $s3);

# list all my buckets
# returns a list of L<Net::Amazon::S3::Client::Bucket> objects
my @buckets = $client->buckets;
foreach my $bucket (@buckets) {
	print $bucket->name . "\n";
}

# create a new bucket
# returns a L<Net::Amazon::S3::Client::Bucket> object
my $bucket = $client->create_bucket(
	name                => $bucket_name,
	acl_short           => 'private',
	location_constraint => 'us-east-1',
);

# or use an existing bucket
# returns a L<Net::Amazon::S3::Client::Bucket> object
my $bucket = $client->bucket( name => $bucket_name );

DESCRIPTION

The Net::Amazon::S3 module was written when the Amazon S3 service had just come out and it is a light wrapper around the APIs. Some bad API decisions were also made. The Net::Amazon::S3::Client, Net::Amazon::S3::Client::Bucket and Net::Amazon::S3::Client::Object classes are designed after years of usage to be easy to use for common tasks.

These classes throw an exception when a fatal error occurs. It also is very careful to pass an MD5 of the content when uploaded to S3 and check the resultant ETag.

WARNING: This is an early release of the Client classes, the APIs may change.

CONSTRUCTOR

s3

Net::Amazon::S3 instance

error_handler_class

Error handler class name (package name), see Net::Amazon::S3::Error::Handler for more. Overrides one available in s3.

Default: Net::Amazon::S3::Error::Handler::Confess

error_handler

Instance of error handler class.

METHODS

new

Net::Amazon::S3::Client can be constructed two ways.

Historically it wraps S3 API instance

use Net::Amazon::S3::Client;

my $client = Net::Amazon::S3::Client->new (
	s3 => .... # Net::Amazon::S3 instance
);

new (since v0.92)

Since v0.92 explicit creation of S3 API instance is no longer necessary. Net::Amazon::S3::Client's constructor accepts same parameters as Net::Amazon::S3

use Net::Amazon::S3::Client v0.92;

my $client = Net::Amazon::S3::Client->new (
	aws_access_key_id     => ...,
	aws_secret_access_key => ...,
	...,
);

buckets

# list all my buckets
# returns a list of L<Net::Amazon::S3::Client::Bucket> objects
my @buckets = $client->buckets;
foreach my $bucket (@buckets) {
  print $bucket->name . "\n";
}

create_bucket

# create a new bucket
# returns a L<Net::Amazon::S3::Client::Bucket> object
my $bucket = $client->create_bucket(
  name                => $bucket_name,
  acl_short           => 'private',
  location_constraint => 'us-east-1',
);

bucket

# or use an existing bucket
# returns a L<Net::Amazon::S3::Client::Bucket> object
my $bucket = $client->bucket( name => $bucket_name );

bucket_class

# returns string "Net::Amazon::S3::Client::Bucket"
# subclasses will want to override this.
my $bucket_class = $client->bucket_class

AUTHOR

Branislav Zahradník <barney@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2022 by Amazon Digital Services, Leon Brocard, Brad Fitzpatrick, Pedro Figueiredo, Rusty Conover, Branislav Zahradník.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.