# WebService::AWS::S3 Client for Amazon Web Services' Simple Storage Service Synopsis -------- ```raku use WebService::AWS::S3; my $secret-access-key = 'passw0rd'; my $access-key-id = 'password1'; my $region = 'us-east-1'; my \s3 = S3.new(:$secret-access-key, :$access-key-id, :$region); s3.put: content => "Hello, world!!", url => "s3://my.own.bucket/hello/world.txt"; say s3.get("s3://my.own.bucket/hello/world.txt"); ``` Description ----------- This module provide a client for Amazon's S3 web service. If you encounter a feature of S3 you want that's not implemented by this module (and there are many), please consider sending a pull request. Overview -------- WebService::AWS::S3 implements commands like `get`, `put`, `list-buckets`, and `list-objects`. WebService::AWS::S3::Resources implement resources like `S3::Bucket` and `S3::Object`. Examples -------- These all assume the environment variables AWS_SECRET_ACCESS_KEY and AWS_ACCESS_KEY_ID have been set. * Print the contents of the first object in the first bucket. ```raku use WebService::AWS::S3; my \s3 = S3.new(:region); my $bucket-list = s3.list-buckets; my $bucket = $bucket-list[0] // die 'no buckets'; my $object-list = s3.list-objects(:$bucket); my $object = $object-list[0] // die "no objects in { $bucket.name }"; my $content = s3.get($object); say $content; ``` * Get contents from a known S3 bucket and key. ```raku use WebService::AWS::S3; my \s3 = S3.new(:region); say s3.get("s3://my.own.bucket/hello/world.txt") ``` * Put text to an S3 location. ```raku use WebService::AWS::S3; my \s3 = S3.new(:region); my $content = "Hello, world!"; my $url = "s3://my.own.bucket/hello/world.txt"; say s3.put(:$content, :$url); ``` TODO ---- A lot.