Factual/drake — pull request #60 by howech (2013-03-23 16:56:43+00:00)
Title: Support for AWS S3

Drake is fantastic work! I hope that my small contribution can be used to make it better.

This pull request add the ability to interact with objects stored in s3.

s3 paths are of the form s3://bucket/path/to/object

aws credentials are loaded from a file identified on command line arguments (eg --aws-credentials=/path/to/credendials.properties). The file should be a properties file containing "access_key" and "access_secret" properties with appropriate values. Other properties in the file are ignored. If you use s3cmd, you can just use the same ~/.s3cfg file).

In order to get access to command line options and because of cyclic dependencies, I had to split the *options* declaration and support code out to a separate file.

I also wrote some tests in the test/drake/test/fs.clj, paralleling the local file system tests, but I left them commented out, as they depend on a lot of things that are by no means generic. I am new to clojure, so I have not figured out yet how to mock the s3 libraries in a way that would allow me to write more proper unit tests.

--Chris Howe
System Architect
Civitas Learning