{
    "mode": "perldoc",
    "parameter": "Amazon::S3",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/perldoc/Amazon%3A%3AS3/json",
    "generated": "2026-10-04T15:32:49Z",
    "synopsis": "use Amazon::S3;\nmy $awsaccesskeyid     = \"Fill me in!\";\nmy $awssecretaccesskey = \"Fill me in too!\";\nmy $s3 = Amazon::S3->new(\n{   awsaccesskeyid     => $awsaccesskeyid,\nawssecretaccesskey => $awssecretaccesskey,\nretry                 => 1\n}\n);\nmy $response = $s3->buckets;\n# create a bucket\nmy $bucketname = $awsaccesskeyid . '-net-amazon-s3-test';\nmy $bucket = $s3->addbucket( { bucket => $bucketname } )\nor die $s3->err . \": \" . $s3->errstr;\n# store a key with a content-type and some optional metadata\nmy $keyname = 'testing.txt';\nmy $value   = 'T';\n$bucket->addkey(\n$keyname, $value,\n{   contenttype        => 'text/plain',\n'x-amz-meta-colour' => 'orange',\n}\n);\n# copy an object\n$bucket->copyobject(\nsource => $source,\nkey    => $newkeyname\n);\n# list keys in the bucket\n$response = $bucket->list\nor die $s3->err . \": \" . $s3->errstr;\nprint $response->{bucket}.\"\\n\";\nfor my $key (@{ $response->{keys} }) {\nprint \"\\t\".$key->{key}.\"\\n\";\n}\n# delete key from bucket\n$bucket->deletekey($keyname);\n# delete multiple keys from bucket\n$bucket->deletekeys([$key1, $key2, $key3]);\n# delete bucket\n$bucket->deletebucket;",
    "sections": {
        "NAME": {
            "content": "Amazon::S3 - A portable client library for working with and managing Amazon S3 buckets and keys.\n",
            "subsections": []
        },
        "SYNOPSIS": {
            "content": "use Amazon::S3;\n\nmy $awsaccesskeyid     = \"Fill me in!\";\nmy $awssecretaccesskey = \"Fill me in too!\";\n\nmy $s3 = Amazon::S3->new(\n{   awsaccesskeyid     => $awsaccesskeyid,\nawssecretaccesskey => $awssecretaccesskey,\nretry                 => 1\n}\n);\n\nmy $response = $s3->buckets;\n\n# create a bucket\nmy $bucketname = $awsaccesskeyid . '-net-amazon-s3-test';\n\nmy $bucket = $s3->addbucket( { bucket => $bucketname } )\nor die $s3->err . \": \" . $s3->errstr;\n\n# store a key with a content-type and some optional metadata\nmy $keyname = 'testing.txt';\n\nmy $value   = 'T';\n\n$bucket->addkey(\n$keyname, $value,\n{   contenttype        => 'text/plain',\n'x-amz-meta-colour' => 'orange',\n}\n);\n\n# copy an object\n$bucket->copyobject(\nsource => $source,\nkey    => $newkeyname\n);\n\n# list keys in the bucket\n$response = $bucket->list\nor die $s3->err . \": \" . $s3->errstr;\n\nprint $response->{bucket}.\"\\n\";\n\nfor my $key (@{ $response->{keys} }) {\nprint \"\\t\".$key->{key}.\"\\n\";\n}\n\n# delete key from bucket\n$bucket->deletekey($keyname);\n\n# delete multiple keys from bucket\n$bucket->deletekeys([$key1, $key2, $key3]);\n\n# delete bucket\n$bucket->deletebucket;\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "This documentation refers to version 0.65.\n\n\"Amazon::S3\" provides a portable client interface to Amazon Simple Storage System (S3).\n\nThis module is rather dated, however with some help from a few contributors it has had some\nrecent updates. Recent changes include implementations of:\n\nListObjectsV2\nCopyObject\nDeleteObjects\n\nAdditionally, this module now implements Signature Version 4 signing, unit tests have been\nupdated and more documentation has been added or corrected. Credentials are encrypted if you\nhave encryption modules installed.\n",
            "subsections": [
                {
                    "name": "Comparison to Other Perl S3 Modules",
                    "content": "Other implementations for accessing Amazon's S3 service include \"Net::Amazon::S3\" and the \"Paws\"\nproject. \"Amazon::S3\" ostensibly was intended to be a drop-in replacement for \"Net:Amazon::S3\"\nthat \"traded some performance in return for portability\". That statement is no longer accurate\nas \"Amazon::S3\" may have changed the interface in ways that might break your applications if you\nare relying on compatibility with \"Net::Amazon::S3\".\n\nHowever, \"Net::Amazon::S3\" and \"Paws::S3\" today, are dependent on \"Moose\" which may in fact\nlevel the playing field in terms of performance penalties that may have been introduced by\nrecent updates to \"Amazon::S3\". Changes to \"Amazon::S3\" include the use of more Perl modules in\nlieu of raw Perl code to increase maintainability and stability as well as some refactoring.\n\"Amazon::S3\" also strives now to adhere to best practices as much as possible.\n\n\"Paws::S3\" may be a much more robust implementation of a Perl S3 interface, however this module\nmay still appeal to those that favor simplicity of the interface and a lower number of\ndependencies. Below is the original description of the module.\n\nAmazon S3 is storage for the Internet. It is designed to make web-scale computing\neasier for developers. Amazon S3 provides a simple web services interface that can be\nused to store and retrieve any amount of data, at any time, from anywhere on the web.\nIt gives any developer access to the same highly scalable, reliable, fast, inexpensive\ndata storage infrastructure that Amazon uses to run its own global network of web\nsites. The service aims to maximize benefits of scale and to pass those benefits on to\ndevelopers.\n\nTo sign up for an Amazon Web Services account, required to use this library and the S3\nservice, please visit the Amazon Web Services web site at http://www.amazonaws.com/.\n\nYou will be billed accordingly by Amazon when you use this module and must be\nresponsible for these costs.\n\nTo learn more about Amazon's S3 service, please visit: http://s3.amazonaws.com/.\n\nThe need for this module arose from some work that needed to work with S3 and would be\ndistributed, installed and used on many various environments where compiled\ndependencies may not be an option. Net::Amazon::S3 used XML::LibXML tying it to that\nspecific and often difficult to install option. In order to remove this potential\nbarrier to entry, this module is forked and then modified to use XML::SAX via\nXML::Simple.\n"
                }
            ]
        },
        "LIMITATIONS AND DIFFERENCES WITH EARLIER VERSIONS": {
            "content": "As noted, this module is no longer a *drop-in* replacement for \"Net::Amazon::S3\" and has\nlimitations and differences that may impact the use of this module in your applications.\nAdditionally, one of the original intents of this fork of \"Net::Amazon::S3\" was to reduce the\nnumber of dependencies and make it *easy to install*. Recent changes to this module have\nintroduced new dependencies in order to improve the maintainability and provide additional\nfeatures. Installing CPAN modules is never easy, especially when the dependencies of the\ndependencies are impossible to control and include XS modules.\n\nMINIMUM PERL\nTechnically, this module should run on versions 5.10 and above, however some of the\ndependencies may require higher versions of \"perl\" or some lower versions of the\ndependencies due to conflicts with other versions of dependencies...it's a crapshoot when\ndealing with older \"perl\" versions and CPAN modules.\n\nYou may however, be able to build this module by installing older versions of those\ndependencies and take your chances that those older versions provide enough working\nfeatures to support \"Amazon::S3\". It is likely they do...and this module has recently been\ntested on version 5.10.0 \"perl\" using some older CPAN modules to resolve dependency issues.\n\nTo build this module on an earlier version of \"perl\" you may need to downgrade some\nmodules. In particular I have found this recipe to work for building and testing on 5.10.0.\n\nIn this order install:\n\nHTML::HeadParser 2.14\nLWP 6.13\nAmazon::S3\n\n...other versions *may* work...YMMV.\n\nAPI Signing\nMaking calls to AWS APIs requires that the calls be signed. Amazon has added a new signing\nmethod (Signature Version 4) to increase security around their APIs. This module no longer\nutilizes Signature Version V2.\n\nNew regions after January 30, 2014 will only support Signature Version 4.\n\nSee \"Signature Version V4\" below for important details.\n\nSignature Version 4\n<https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-query-string-auth.html>\n\n*IMPORTANT NOTE:*\n\nUnlike Signature Version 2, Version 4 requires a regional parameter. This implies\nthat you need to supply the bucket's region when signing requests for any API\ncall that involves a specific bucket. Starting with version 0.55 of this module,\n\"Amazon::S3::Bucket\" provides a new method (region()) and accepts in the\nconstructor a \"region\" parameter. If a region is not supplied, the region for the\nbucket will be set to the region set in the \"account\" object (\"Amazon::S3\") that\nyou passed to the bucket's new constructor. Alternatively, you can request that\nthe bucket's new constructor determine the bucket's region for you by calling the\ngetlocationconstraint() method.\n\nWhen signing API calls, the region for the specific bucket will be used. For\ncalls that are not regional (buckets(), e.g.) the default region ('us-east-1')\nwill be used.\n\nSignature Version 2\n<https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html>\n\nNew APIs\nThis module does not support some of the newer API method calls for S3 added after the\ninitial creation of this interface.\n\nMultipart Upload Support\nThere are some recently added unit tests for multipart uploads that seem to indicate this\nfeature is working as expected. Please report any deviation from expected results if you\nare using those methods.\n\nFor more information regarding multipart uploads visit the link below.\n\n<https://docs.aws.amazon.com/AmazonS3/latest/API/APICreateMultipartUpload.html>\n",
            "subsections": []
        },
        "METHODS AND SUBROUTINES": {
            "content": "new\nCreate a new S3 client object. Takes some arguments:\n\ncredentials (optional)\nReference to a class (like \"Amazon::Credentials\") that can provide credentials via the\nmethods:\n\ngetawsaccesskeyid()\ngetawssecretaccesskey()\ngettoken()\n\nIf you do not provide a credential class you must provide the keys when you instantiate the\nobject. See below.\n\n*You are strongly encourage to use a class that provides getters. If you choose to provide\nyour credentials to this class then they will be stored in this object. If you dump the\nclass you will likely expose those credentials.*\n\nawsaccesskeyid\nUse your Access Key ID as the value of the AWSAccessKeyId parameter in requests you send to\nAmazon Web Services (when required). Your Access Key ID identifies you as the party\nresponsible for the request.\n\nawssecretaccesskey\nSince your Access Key ID is not encrypted in requests to AWS, it could be discovered and\nused by anyone. Services that are not free require you to provide additional information, a\nrequest signature, to verify that a request containing your unique Access Key ID could only\nhave come from you.\n\nDO NOT INCLUDE THIS IN SCRIPTS OR APPLICATIONS YOU DISTRIBUTE. YOU'LL BE SORRY.\n\n*Consider using a credential class as described above to provide credentials, otherwise this\nclass will store your credentials for signing the requests. If you dump this object to logs\nyour credentials could be discovered.*\n\ntoken\nAn optional temporary token that will be inserted in the request along with your access and\nsecret key. A token is used in conjunction with temporary credentials when your EC2 instance\nhas assumed a role and you've scraped the temporary credentials from\n*http://169.254.169.254/latest/meta-data/iam/security-credentials*\n\nsecure\nSet this to a true value if you want to use SSL-encrypted connections when connecting to S3.\nStarting in version 0.49, the default is true.\n\ndefault: true\n\ntimeout\nDefines the time, in seconds, your script should wait or a response before bailing.\n\ndefault: 30s\n\nretry\nEnables or disables the library to retry upon errors. This uses exponential backoff with\nretries after 1, 2, 4, 8, 16, 32 seconds, as recommended by Amazon.\n\ndefault: off\n\nhost\nDefines the S3 host endpoint to use.\n\ndefault: s3.amazonaws.com\n\nNote that requests are made to domain buckets when possible. You can prevent that behavior\nif either the bucket name does not conform to DNS bucket naming conventions or you preface\nthe bucket name with '/'.\n\nIf you set a region then the host name will be modified accordingly if it is an Amazon\nendpoint.\n\nregion\nThe AWS region you where your bucket is located.\n\ndefault: us-east-1\n\nbuffersize\nThe default buffer size when reading or writing files.\n\ndefault: 4096\n\nsigner\nSets or retrieves the signer object. API calls must be signed using your AWS credentials. By\ndefault, starting with version 0.54 the module will use Net::Amazon::Signature::V4 as the signer\nand instantiate a signer object in the constructor. Note however, that signers need your\ncredentials and they *will* get stored by that class, making them susceptible to inadvertant\nexfiltration. You have a few options here:\n\n1. Use your own signer.\nYou may have noticed that you can also provide your own credentials object forcing this\nmodule to use your object for retrieving credentials. Likewise, you can use your own signer\nso that this module's signer never sees or stores those credentials.\n\n2. Pass the credentials object and set \"cachesigner\" to a false value.\nIf you pass a credentials object and set \"cachesigner\" to a false value, the module will\nuse the credentials object to retrieve credentials and create a new signer each time an API\ncall is made that requires signing. This prevents your credentials from being stored inside\nof the signer class.\n\n*Note that using your own credentials object that stores your credentials in plaintext is\nalso going to expose your credentials when someone dumps the class.*\n\n3. Pass credentials, set \"cachesigner\" to a false value.\nUnfortunately, while this will prevent Net::Amazon::Signature::V4 from hanging on to your\ncredentials, you credentials will be stored in the \"Amazon::S3\" object.\n\nStarting with version 0.55 of this module, if you have installed Crypt::CBC and\nCrypt::Blowfish, your credentials will be encrypted using a random key created when the\nclass is instantiated. While this is more secure than leaving them in plaintext, if the key\nis discovered (the key however is not stored in the object's hash) and the object is\ndumped, your *encrypted* credentials can be exposed.\n\n4. Use very granular credentials for bucket access only.\nUse credentials that only allow access to a bucket or portions of a bucket required for\nyour application. This will at least limit the *blast radius* of any potential security\nbreach.\n\n5. Do nothing...send the credentials, use the default signer.\nIn this case, both the \"Amazon::S3\" class and the Net::Amazon::Signature::V4 have your\ncredentials. Caveat Emptor.\n\nSee also Amazon::Credentials for more information about safely storing your credentials and\npreventing exfiltration.\n\nregion\nSets the region for the API calls. This will also be the default when instantiating the bucket\nobject unless you pass the region parameter in the \"bucket\" method or use the \"verifyregion\"\nflag that will *always* verify the region of the bucket using the \"getlocationconstraint\"\nmethod.\n\ndefault: us-east-1\n\nbuckets\nbuckets([verify-region])\n\nverify-region (optional)\n\"verify-region\" is a boolean value that indicates if the bucket's region should be verified\nwhen the bucket object is instantiated.\n\nIf set to true, this method will call the \"bucket\" method with \"verifyregion\" set to true\ncausing the constructor to call the \"getlocationconstraint\" for each bucket to set the\nbucket's region. This will cause a significant decrease in the peformance of the buckets()\nmethod. Setting the region for each bucket is necessary since API operations on buckets\nrequire the region of the bucket when signing API requests. If all of your buckets are in\nthe same region and you have passed a region parameter to your S3 object, then that region\nwill be used when calling the constructor of your bucket objects.\n\ndefault: false\n\nReturns a reference to a hash containing the metadata for all of the buckets owned by the accout\nor (see below) or \"undef\" on error.\n\nownerid\nThe owner ID of the bucket's owner.\n\nownerdisplayname\nThe name of the owner account.\n\nbuckets\nAn array of Amazon::S3::Bucket objects for the account. Returns \"undef\" if there are not\nbuckets or an error occurs.\n\naddbucket\naddbucket(bucket-configuration)\n\n\"bucket-configuration\" is a reference to a hash with bucket configuration parameters.\n\nbucket\nThe name of the bucket. See Bucket name rules\n<https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html> for more\ndetails on bucket naming rules.\n\naclshort (optional)\nSee the setacl subroutine for documentation on the aclshort options\n\nlocationconstraint\nregion\nThe region the bucket is to be created in.\n\nReturns a Amazon::S3::Bucket object on success or \"undef\" on failure.\n\nbucket\nbucket(bucket, [region])\n\nbucket({ bucket => bucket-name, verifyregion => boolean, region => region });\n\nTakes a scalar argument or refernce to a hash of arguments.\n\nYou can pass the region or set \"verifyregion\" indicating that you want the bucket constructor\nto detemine the bucket region.\n\nIf you do not pass the region or set the \"verifyregion\" value, the region will be set to the\ndefault region set in your \"Amazon::S3\" object.\n\nSee Amazon::S3::Bucket for a complete description of the \"bucket\" method.\n\ndeletebucket\nTakes either a Amazon::S3::Bucket object or a reference to a hash containing:\n\nbucket\nThe name of the bucket to remove\n\nregion\nRegion the bucket is located in. If not provided, the method will determine the bucket's\nregion by calling \"getbucketlocation\".\n\nReturns a boolean indicating the success or failure of the API call. Check \"err\" or \"errstr\" for\nerror messages.\n\nNote from the Amazon's documentation\n<https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html>\n\nIf a bucket is empty, you can delete it. After a bucket is deleted, the name becomes\navailable for reuse. However, after you delete the bucket, you might not be able to\nreuse the name for various reasons.\n\nFor example, when you delete the bucket and the name becomes available for reuse,\nanother AWS account might create a bucket with that name. In addition, some time might\npass before you can reuse the name of a deleted bucket. If you want to use the same\nbucket name, we recommend that you don't delete the bucket.\n\ndnsbucketnames\nSet or get a boolean that indicates whether to use DNS bucket names.\n\ndefault: true\n\nlistbucket, listbucketv2\nList all keys in this bucket.\n\nTakes a reference to a hash of arguments:\n\nbucket (required)\nThe name of the bucket you want to list keys on.\n\nprefix\nRestricts the response to only contain results that begin with the specified prefix. If you\nomit this optional argument, the value of prefix for your query will be the empty string. In\nother words, the results will be not be restricted by prefix.\n\ndelimiter\nIf this optional, Unicode string parameter is included with your request, then keys that\ncontain the same string between the prefix and the first occurrence of the delimiter will be\nrolled up into a single result element in the CommonPrefixes collection. These rolled-up\nkeys are not returned elsewhere in the response. For example, with prefix=\"USA/\" and\ndelimiter=\"/\", the matching keys \"USA/Oregon/Salem\" and \"USA/Oregon/Portland\" would be\nsummarized in the response as a single \"USA/Oregon\" element in the CommonPrefixes\ncollection. If an otherwise matching key does not contain the delimiter after the prefix, it\nappears in the Contents collection.\n\nEach element in the CommonPrefixes collection counts as one against the MaxKeys limit. The\nrolled-up keys represented by each CommonPrefixes element do not. If the Delimiter parameter\nis not present in your request, keys in the result set will not be rolled-up and neither the\nCommonPrefixes collection nor the NextMarker element will be present in the response.\n\nNOTE: CommonPrefixes isn't currently supported by Amazon::S3.\n\nmax-keys\nThis optional argument limits the number of results returned in response to your query.\nAmazon S3 will return no more than this number of results, but possibly less. Even if\nmax-keys is not specified, Amazon S3 will limit the number of results in the response. Check\nthe IsTruncated flag to see if your results are incomplete. If so, use the Marker parameter\nto request the next page of results. For the purpose of counting max-keys, a 'result' is\neither a key in the 'Contents' collection, or a delimited prefix in the 'CommonPrefixes'\ncollection. So for delimiter requests, max-keys limits the total number of list results, not\njust the number of keys.\n\nmarker\nThis optional parameter enables pagination of large result sets. \"marker\" specifies where in\nthe result set to resume listing. It restricts the response to only contain results that\noccur alphabetically after the value of marker. To retrieve the next page of results, use\nthe last key from the current page of results as the marker in your next request.\n\nSee also \"nextmarker\", below.\n\nIf \"marker\" is omitted,the first page of results is returned.\n\nReturns \"undef\" on error and a reference to a hash of data on success:\n\nThe return value looks like this:\n\n{\nbucket       => $bucketname,\nprefix       => $bucketprefix,\nmarker       => $bucketmarker,\nnextmarker  => $bucketnextavailablemarker,\nmaxkeys     => $bucketmaxkeys,\nistruncated => $bucketistruncatedboolean\nkeys          => [$key1,$key2,...]\n}\n\nistruncated\nBoolean flag that indicates whether or not all results of your query were returned in this\nresponse. If your results were truncated, you can make a follow-up paginated request using\nthe Marker parameter to retrieve the rest of the results.\n\nnextmarker\nA convenience element, useful when paginating with delimiters. The value of \"nextmarker\",\nif present, is the largest (alphabetically) of all key names and all CommonPrefixes prefixes\nin the response. If the \"istruncated\" flag is set, request the next page of results by\nsetting \"marker\" to the value of \"nextmarker\". This element is only present in the response\nif the \"delimiter\" parameter was sent with the request.\n\nEach key is a reference to a hash that looks like this:\n\n{\nkey           => $key,\nlastmodified => $lastmoddate,\netag          => $etag, # An MD5 sum of the stored content.\nsize          => $size, # Bytes\nstorageclass => $storageclass # Doc?\nownerid      => $ownerid,\nownerdisplayname => $ownername\n}\n\ngetbucketlocation\ngetbucketlocation(bucket-name)\ngetbucketlocaiton(bucket-obj)\n\nThis is a convenience routines for the getlocationconstraint() of the bucket object. This\nmethod will return the default region of 'us-east-1' when getlocationconstraint() returns a\nnull value.\n\nmy $region = $s3->getbucketlocation('my-bucket');\n\nStarting with version 0.55, \"Amazon::S3::Bucket\" will call this getlocationconstraint() to\ndetermine the region for the bucket. You can get the region for the bucket by using the region()\nmethod of the bucket object.\n\nmy $bucket = $s3->bucket('my-bucket');\nmy $bucketregion = $bucket->region;\n\ngetlogger\nReturns the logger object. If you did not set a logger when you created the object then an\ninstance of \"Amazon::S3::Logger\" is returned. You can log to STDERR using this logger. For\nexample:\n\n$s3->getlogger->debug('this is a debug message');\n\n$s3->getlogger->trace(sub { return Dumper([$response]) });\n\nlistbucketall, listbucketallv2\nList all keys in this bucket without having to worry about 'marker'. This is a convenience\nmethod, but may make multiple requests to S3 under the hood.\n\nTakes the same arguments as \"listbucket\".\n\n*You are encouraged to use the newer \"listbucketallv2\" method.*\n\nerr\nThe S3 error code for the last error encountered.\n\nerrstr\nA human readable error string for the last error encountered.\n\nerror\nThe decoded XML string as a hash object of the last error.\n\nlastresponse\nReturns the last HTTP::Response object.\n\nlastrequest\nReturns the last HTTP::Request object.\n\nlevel\nSet the logging level.\n\ndefault: error\n\nturnonspecialretry\nCalled to add extra retry codes if retry has been set\n\nturnoffspecialretry\nCalled to turn off special retry codes when we are deliberately triggering them\n",
            "subsections": []
        },
        "ABOUT": {
            "content": "This module contains code modified from Amazon that contains the following notice:\n\n#  This software code is made available \"AS IS\" without warranties of any\n#  kind.  You may copy, display, modify and redistribute the software\n#  code either by itself or as incorporated into your code; provided that\n#  you do not remove any proprietary notices.  Your use of this software\n#  code is at your own risk and you waive any claim against Amazon\n#  Digital Services, Inc. or its affiliates with respect to your use of\n#  this software code. (c) 2006 Amazon Digital Services, Inc. or its\n#  affiliates.\n",
            "subsections": []
        },
        "TESTING": {
            "content": "Testing S3 is a tricky thing. Amazon wants to charge you a bit of money each time you use their\nservice. And yes, testing counts as using. Because of this, the application's test suite skips\nanything approaching a real test unless you set these environment variables:\n\nFor more on testing this module see README-TESTING.md\n<https://github.com/rlauer6/perl-amazon-s3/blob/master/README-TESTING.md>\n\nAMAZONS3EXPENSIVETESTS\nDoesn't matter what you set it to. Just has to be set\n\nAMAZONS3HOST\nSets the host to use for the API service.\n\ndefault: s3.amazonaws.com\n\nNote that if this value is set, DNS bucket name usage will be disabled for testing. Most\nlikely, if you set this variable, you are using a mocking service and your bucket names are\nprobably not resolvable. You can override this behavior by setting \"AWSS3DNSBUCKETNAMES\"\nto any value.\n\nAWSS3DSNBUCKETNAMES\nSet this to any value to override the default behavior of disabling DNS bucket names during\ntesting.\n\nAWSACCESSKEYID\nYour AWS access key\n\nAWSSECRETACCESSKEY\nYour AWS sekkr1t passkey. Be forewarned that setting this environment variable on a shared\nsystem might leak that information to another user. Be careful.\n\nAMAZONS3SKIPACLTESTS\nDoesn't matter what you set it to. Just has to be set if you want to skip ACLs tests.\n\nAMAZONS3SKIPPERMISSIONS\nSkip tests that check for enforcement of ACLs...as of this version, LocalStack for example\ndoes not support enforcement of ACLs.\n\nAMAZONS3SKIPREGIONCONSTRAINTTEST\nDoesn't matter what you set it to. Just has to be set if you want to skip region constraint\ntest.\n\nAMAZONS3MINIO\nDoesn't matter what you set it to. Just has to be set if you want to skip tests that would\nfail on minio.\n\nAMAZONS3LOCALSTACK\nDoesn't matter what you set it to. Just has to be set if you want to skip tests that would\nfail on LocalStack.\n\nAMAZONS3REGIONS\nA comma delimited list of regions to use for testing. The default will only test creating a\nbucket in the local region.\n\n*Consider using an S3 mocking service like \"minio\" or \"LocalStack\" if you want to create real\ntests for your applications or this module.*\n\nHere's bash script for testing using LocalStack\n\n#!/bin/bash\n# -*- mode: sh; -*-\n\nBUCKET=net-amazon-s3-test-test\nENDPOINTURL=s3.localhost.localstack.cloud:4566\n\nAMAZONS3EXPENSIVETESTS=1 \\\nAMAZONS3HOST=$ENDPOINTURL \\\nAMAZONS3LOCALSTACK=1 \\\nAWSACCESSKEYID=test \\\nAWSACCESSSECRETKEY=test  \\\nAMAZONS3DOMAINBUCKETNAMES=1 make test 2>&1 | tee test.log\n\nTo run the tests...clone the project and build the software.\n\ncd src/main/perl\n./test.localstack\n",
            "subsections": []
        },
        "ADDITIONAL INFORMATION": {
            "content": "LOGGING AND DEBUGGING\nAdditional debugging information can be output to STDERR by setting the \"level\" option when you\ninstantiate the \"Amazon::S3\" object. Levels are represented as a string. The valid levels are:\n\nfatal\nerror\nwarn\ninfo\ndebug\ntrace\n\nYou can set an optionally pass in a logger that implements a subset of the \"Log::Log4perl\"\ninterface. Your logger should support at least these method calls. If you do not supply a logger\nthe default logger (\"Amazon::S3::Logger\") will be used.\n\ngetlogger()\nfatal()\nerror()\nwarn()\ninfo()\ndebug()\ntrace()\nlevel()\n\nAt the \"trace\" level, every HTTP request and response will be output to STDERR. At the \"debug\"\nlevel information regarding the higher level methods will be output to STDERR. There currently\nis no additional information logged at lower levels.\n\nS3 LINKS OF INTEREST\nBucket restrictions and limitations\n<https://docs.aws.amazon.com/AmazonS3/latest/userguide/BucketRestrictions.html>\nBucket naming rules\n<https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html>\nAmazon S3 REST API <https://docs.aws.amazon.com/AmazonS3/latest/API/Welcome.html>\nAuthenticating Requests (AWS Signature Version 4)\n<https://docs.aws.amazon.com/AmazonS3/latest/API/sig-v4-authenticating-requests.html>\nAuthenticating Requests (AWS Signature Version 2)\n<https://docs.aws.amazon.com/AmazonS3/latest/userguide/RESTAuthentication.html>\nLocalStack <https://localstack.io>\n",
            "subsections": []
        },
        "SUPPORT": {
            "content": "Bugs should be reported via the CPAN bug tracker at\n\n<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Amazon-S3>\n\nFor other issues, contact the author.\n",
            "subsections": []
        },
        "REPOSITORY": {
            "content": "<https://github.com/rlauer6/perl-amazon-s3>\n",
            "subsections": []
        },
        "AUTHOR": {
            "content": "Original author: Timothy Appnel <tima@cpan.org>\n\nCurrent maintainer: Rob Lauer <bigfoot@cpan.org>\n",
            "subsections": []
        },
        "SEE ALSO": {
            "content": "Amazon::S3::Bucket, Net::Amazon::S3\n",
            "subsections": []
        },
        "COPYRIGHT AND LICENCE": {
            "content": "This module was initially based on Net::Amazon::S3 0.41, by Leon Brocard. Net::Amazon::S3 was\nbased on example code from Amazon with this notice:\n\n*This software code is made available \"AS IS\" without warranties of any kind. You may copy,\ndisplay, modify and redistribute the software code either by itself or as incorporated into your\ncode; provided that you do not remove any proprietary notices. Your use of this software code is\nat your own risk and you waive any claim against Amazon Digital Services, Inc. or its affiliates\nwith respect to your use of this software code. (c) 2006 Amazon Digital Services, Inc. or its\naffiliates.*\n\nThe software is released under the Artistic License. The terms of the Artistic License are\ndescribed at http://www.perl.com/language/misc/Artistic.html. Except where otherwise noted,\n\"Amazon::S3\" is Copyright 2008, Timothy Appnel, tima@cpan.org. All rights reserved.\n",
            "subsections": []
        }
    },
    "summary": "Amazon::S3 - A portable client library for working with and managing Amazon S3 buckets and keys.",
    "flags": [],
    "examples": [],
    "see_also": []
}