Another good item to consider:

n) Do you really need S3? is it cheaper than NFS storage on a compute node with a large disk?

There are many cases where S3 is absolutely cheaper though.

In my experience NFS is always the wrong thing to use.

Your application think it's a normal disk but it isn't, so you get no timeouts, no specific errors for network issues and extremely expensive calls camouflage as quick FS ops (was any file modified in this folder ? I'll just loop over them using my standard library nice FS utilities). And you don't get atomic ops outside of mv, invalidation and caching are complicated and your developers probably don't know the semantics of FS operations, which are much more complex and less well documented than eg Redis blob storage.

And then when you finally rip out NFS, you have thousands of lines of app and test code that assumes your blobs are on a disk in subtle ways.

Safe to assume s3fs and smb have similar issues?

I would think something like NFS is best suited for an actual file instead of blob you're serializing using a file system api?