---
name: "Net::Amazon::S3::Client"
section: "3pm"
platform: "linux"
package: "libnet-amazon-s3-perl"
version: "0.991-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/Net::Amazon::S3::Client"
---

# Net::Amazon::S3::Client(3pm)

An easy-to-use Amazon S3 client

## 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.
