Faetus is an FTP server that translates FTP commands into Amazon S3 API calls providing an FTP interface on top of Amazon S3 storage.
This project came out of a specific need I have at PBS. I need to put files on Amazon S3 storage, but the 3rd-party file management system doesn't know how to speak to S3's APIs. What the system does understand is FTP. So I decided to write an FTP server that utilizes S3 storage as opposed to local filesystems.
The server is based on pyftpdlib, a Python library that implements most, if not the full RFC spec for. Especially nice is the fact that the the library implements the filesystem layer in an abstract fashion. I basically needed to replace all the filesystem calls with S3 API calls. I used boto to handle all the S3 API calls and I quickly had a working prototype.
After playing with my prototype for a few hours, I stumbled upon Chmouel's ftp-cloudfs... who basically did the exact thing I had just done, but for Rackspace CloudFiles. For consistency's sake, I rolled my code back, forked ftp-cloudfs, gave the project a questionable new name, and added my S3 code back in. La voila!
- Faetus project page
- Source code on GitHub