Currently, the S3 datastores need local disk to work (not sure about the Azure one).
This should not be needed (not for upload, caching,...).
Also, temporary files for garbage collection should not be needed (instead, use temporary binaries, possibly written to S3 / Azure).
Really everything should fit in a few MB of memory.
For S3, it might be needed to read a few MB of data into memory, and then possibly do a multipart upload: