It was an ok solution for what we were doing, but several times I came really close to just dumping it and standing up an NFS server using EBS volumes.
I also used it a couple of times to store webroots and that was a complete disaster with systems that had lots of small files (Drupal I'm looking at you).
Before doing that it was unacceptably slow. After doing that it was unacceptably expensive.
treating storage as an application-controlled thing that doesn't need systems management is a good thing. i want "put this file in this spot" logic in my application code, not "put this file in this spot on the filesystem, and hope that location is backed by the correct storage layer"
https://docs.aws.amazon.com/AmazonS3/latest/userguide/mountp...
For example a container or EC2 instance might only need a tiny bit of your storage and with s3 can just download what it needs when it needs it.
As opposed to EFS where the container or instance needs to load in the entire datastore on startup which can add minutes to startup time if the EFS drive is large.
Often these servers will load 128+GB of data into RAM (crazy, huh?) and even if you have 1GB/sec it's still two minutes for the server to start up.