I know I’m late to the game on this one, but I recently found s3cmd, a command line interface on to Amazon S3, and life got a little bit easier.

To download s3cmd using brew, execute the following command:

brew install s3cmd

Once s3cmd is installed, you need to configure it with your EC2 access keys:

s3cmd --configure

The access keys can be found in the securities section of your EC2 management console.

Once you have the command configured, lets run a UNIX-style ls of your S3 buckets:

JOSEPH-MISITI:~ josephmisiti$ s3cmd ls
2013-11-10 02:34 s3://buttonbox-developement
2014-01-06 18:47 s3://dukemail-developement
2013-11-08 02:36 s3://elementcycle
2014-01-22 04:22 s3://dev-getfetcher
...

If you want to create a new bucket, you can execute the create bucket command:

JOSEPH-MISITI:~ josephmisiti$ s3cmd mb s3://mathandpencil-example
Bucket 's3://mathandpencil-example/' created

Now lets copy a zip file to the new bucket:

JOSEPH-MISITI:~ josephmisiti$ s3cmd put ~/Downloads/tdd-backbone-mocha.zip s3://mathandpencil-example
/Users/josephmisiti/Downloads/tdd-backbone-mocha.zip -> s3://mathandpencil-example/tdd-backbone-mocha.zip [1 of 1]
144871 of 144871 100% in 1s 122.43 kB/s done
JOSEPH-MISITI:~ josephmisiti$ s3cmd ls s3://mathandpencil-example
2014-09-05 03:41 144871 s3://mathandpencil-example/tdd-backbone-mocha.zip

And lets make that zip file publicly accessible:

JOSEPH-MISITI:~ josephmisiti$ s3cmd setacl --acl-public --recursive s3://mathandpencil-example
s3://mathandpencil-example/tdd-backbone-mocha.zip: ACL set to Public [1 of 1]

Finally, lets delete the zip file and then the bucket itself:

JOSEPH-MISITI:~ josephmisiti$ s3cmd del s3://mathandpencil-example/tdd-backbone-mocha.zip
File s3://mathandpencil-example/tdd-backbone-mocha.zip deleted
JOSEPH-MISITI:~ josephmisiti$ s3cmd rb s3://mathandpencil-example/
Bucket 's3://mathandpencil-example/' removed

That’s it! It is an amazing tool that makes script and accesing S3 much easier and enjoyable.