Amazon-S3
view release on metacpan or search on metacpan
- retry
Enables or disables the library to retry upon errors. This
uses exponential backoff with retries after 1, 2, 4, 8, 16,
32 seconds, as recommended by Amazon.
default: off
- host
Defines the S3 host endpoint to use.
default: s3.amazonaws.com
Note that requests are made to domain buckets when possible. You can
prevent that behavior if either the bucket name does not conform to
DNS bucket naming conventions or you preface the bucket name with '/'.
If you set a region then the host name will be modified accordingly if
it is an Amazon endpoint.
- region
The AWS region you where your bucket is located.
default: us-east-1
- buffer\_size
The default buffer size when reading or writing files.
lib/Amazon/S3.pm view on Meta::CPAN
return $self->_region;
}
########################################################################
sub buckets {
########################################################################
my ( $self, $verify_region ) = @_;
# The "default" region for Amazon is us-east-1
# This is the region to set it to for listing buckets
# You may need to reset the signer's endpoint to 'us-east-1'
# temporarily cache signer
my $region = $self->_region;
my $bucket_list;
$self->reset_signer_region($DEFAULT_REGION); # default region for buckets op
my $r = $self->_send_request(
{ method => 'GET',
path => $EMPTY,
lib/Amazon/S3.pm view on Meta::CPAN
}
$self->get_logger->debug( sprintf 'URL (uri): %s', $url );
my $request = HTTP::Request->new( $method, $url, $http_headers );
$self->last_request($request);
$request->content($data);
$self->signer->region($region); # always set regional endpoint for signing
$self->signer->sign($request);
$self->get_logger->trace( sub { return Dumper( [$request] ); } );
return $request;
}
# $self->_send_request($HTTP::Request)
# $self->_send_request(@params_to_make_request)
lib/Amazon/S3.pm view on Meta::CPAN
my $error_hash = $self->_xpc_of_content( $response->content );
if ( $error_hash->{'Code'} eq 'PermanentRedirect'
and $error_hash->{'Endpoint'} ) {
# Don't recurse through multiple redirects
return $FALSE
if $called_from_redirect;
# With a permanent redirect error, they are telling us the explicit
# host to use. The endpoint will be in the form of bucket.host
my $host = $error_hash->{'Endpoint'};
# Remove the bucket name from the front of the host name
# All the requests will need to be of the form https://host/bucket
$host =~ s/\A$bucket[.]//xsm;
$self->host($host);
# We will need to call ourselves again in order to trigger the
# AuthorizationHeaderMalformed error in order to get the region
return $self->adjust_region( $bucket, 1 );
}
if ( $error_hash->{'Code'} eq 'AuthorizationHeaderMalformed'
and $error_hash->{'Region'} ) {
# Set the signer to use the correct reader evermore
$self->{'signer'}{'endpoint'} = $error_hash->{'Region'};
# Only change the host if we haven't been called as a redirect
# where an exact host has been given
if ( !$called_from_redirect ) {
$self->host( 's3-' . $error_hash->{'Region'} . '.amazonaws.com' );
}
return $TRUE;
}
if ( $error_hash->{'Code'} eq 'IllegalLocationConstraintException' ) {
# This is hackish; but in this case the region name only appears in the message
if ( $error_hash->{'Message'} =~ /The (\S+) location/xsm ) {
my $region = $1;
# Correct the region for the signer
$self->{'signer'}{'endpoint'} = $region;
# Set the proper host for the region
$self->host( 's3.' . $region . '.amazonaws.com' );
return $TRUE;
}
}
}
lib/Amazon/S3.pm view on Meta::CPAN
=item retry
Enables or disables the library to retry upon errors. This
uses exponential backoff with retries after 1, 2, 4, 8, 16,
32 seconds, as recommended by Amazon.
default: off
=item host
Defines the S3 host endpoint to use.
default: s3.amazonaws.com
Note that requests are made to domain buckets when possible. You can
prevent that behavior if either the bucket name does not conform to
DNS bucket naming conventions or you preface the bucket name with '/'.
If you set a region then the host name will be modified accordingly if
it is an Amazon endpoint.
=item region
The AWS region you where your bucket is located.
default: us-east-1
=item buffer_size
The default buffer size when reading or writing files.
lib/Amazon/S3/Signature/V4.pm view on Meta::CPAN
use parent qw{Net::Amazon::Signature::V4};
########################################################################
sub new {
########################################################################
my ( $class, @args ) = @_;
my %options;
if ( !ref $args[0] ) {
@options{qw{access_key_id secret endpoint service}} = @args;
}
else {
%options = %{ $args[0] };
}
my $region = delete $options{region};
$options{endpoint} //= $region;
my $self = $class->SUPER::new( \%options );
return $self;
}
########################################################################
sub region {
########################################################################
my ( $self, @args ) = @_;
if (@args) {
$self->{endpoint} = $args[0];
}
return $self->{endpoint};
}
1;
( run in 0.303 second using v1.01-cache-2.11-cpan-27979f6cc8f )