How can you use Amazon S3 or S3-compatible Storage as NFS?

How can you use Amazon S3 or S3-compatible Storage as NFS? Is there a way to achieve this?

Something that can be accessed through an external network (internet, public) using NFS protocol.


Solution 1:

If you want to use S3 as mounted storage for personal computers, you have two possibilities.

One is to use an EC2 server as NFS server, backed by S3. AWS provides a server called AWS Storage Gateway for doing this, but you will of course have to pay for running that server 24/7. I think it might be oriented towards providing NFS inside your VPC, though. Providing an NFS service over the Internet is an uncomfortable proposition from a security perspective.

Much better is to have code on your computer to present S3 as local storage. There is a commercial plugin called ObjectiveFS and a free opensource one called S3FS-FUSE; I think S3FS-FUSE is the answer you are looking for, if it is not then their page at the bottom has a list of "competitors".

There are several caveats to using S3 as mounted storage, though:

  • modifying a file forces you to re-upload the whole object, which is bad if you modify large files.
  • since IO is billed per request you might incur unexpected costs (think updatedb running over your data).

Solution 2:

EFS (Elastic File System) is NFS on AWS. But it has nothing to do with S3.

If you need to serve files on that type of FS I think you need to run your own webserver pointing to the mounted share.