How to setup shared persistent storage for multiple AWS EC2 instances?


I have a service hosted on Amazon Web Services. There I have multiple EC2 instances running with the exact same setup and data, managed by an Elastic Load Balancer and scaling groups.

Those instances are web servers running web applications based on PHP. So currently there are the very same files etc. placed on every instance. But when the ELB / scaling group launches a new instance based on load rules etc., the files might not be up-to-date.
Additionally, I’d rather like to use a shared file system for PHP sessions etc. than sticky sessions.

So, my question is, for those reasons and maybe more coming up in the future, I would like to have a shared file system entity which I can attach to my EC2 instances.
What way would you suggest to resolve this? Are there any solutions offered by AWS directly so I can rely on their services rather than doing it on my on with a DRBD and so on? What is the easiest approach? DRBD, NFS, …? Is S3 also feasible for those intends?

Thanks in advance.


As mentioned in a comment, AWS has announced EFS ( a shared network file system. It is currently in very limited preview, but based on previous AWS services I would hope to see it generally available in the next few months.

In the meantime there are a couple of third party shared file system solutions for AWS such as SoftNAS

S3 is possible but not always ideal, the main blocker being it does not natively support any filesystem protocols, instead all interactions need to be via an AWS API or via http calls. Additionally when looking at using it for session stores the ‘eventually consistent’ model will likely cause issues.

That being said – if all you need is updated resources, you could create a simple script to run either as a cron or on startup that downloads the files from s3.

Finally in the case of static resources like css/images don’t store them on your webserver in the first place – there are plenty of articles covering the benefit of storing and accessing static web resources directly from s3 while keeping the dynamic stuff on your server.

Leave a Reply