Introducing, a S3 type provider for F#

I work with Ama­zon S3, and indeed many of the Amazon’s cloud ser­vices, and one of the things that is often frus­trat­ing in my day-to-day work­flow is the need to keep jump­ing out of the IDE, find the files I’m look­ing for in a S3 explor­er, grab the key to the file and then go back to the IDE and write code against the AWS SDK to read the data from S3 and do some­thing with that data.

This inef­fi­cien­cy in my devel­op­ment process is mag­ni­fied when work­ing against buck­ets with large num­ber of keys and/or buck­ets which has ver­sion­ing turned on.

With these in mind, I want­ed to cre­ate a type provider which is:

  • able to inter­ac­tive­ly nav­i­gate buck­ets, fold­ers and files in S3
  • able to retrieve data eas­i­ly in either bina­ry of sim­ple text for­mat
  • able to search for files eas­i­ly

plus all the usu­al good­ness that comes with F# type providers, such as:

  • not hav­ing to leave the IDE and let the provider do all the hard work for me
  • have sta­t­ic type safe­ty with regards to the file struc­ture in S3 (if some­one deletes/renames a file or fold­er I will be informed via a com­pile time error rather than a run­time excep­tion!)

 

After a few nights of work I final­ly have some­thing that’s of usable shape, here is a quick demo video I’ve pre­pared of the type provider in action:

 

The source code for the type provider is open source and can be found here, you can also grab it from Nuget here.

Go on, give it a play and let me know if you have any feed­backs!

 

Enjoy!