Earlier quoted context omitted.
It's absolutely doable if you design for it. The moment you choose to use S3 instead of hosting your own object store, though, you either use AWS because S3 and IAM already have you or spend more time on the care and feeding of your storage system as opposed to actually doing the thing you customers are paying you to do. It's not impossible, just complicated and difficult for any moderately complex architecture.
There are plenty of compatible S3-like offerings. That's one of the lesser things that tie me to a cloud.
One thing very important, is that I can authorise specific web clients (users) to access specific resources from S3. Such as a document that he can download, but others with the link should not be able to download.
Thank you!