A mircoservice would validate pings notifying it of data to ingest into the central CAS. Users get permission to upload to a namespace then ping the workers to validate and move the file over.
Append only so no difference between dev and production.
bucket
+ root
| | SHAs...
+ users
\ + some_duder
\ | SHAs...
- Needs credentials to bucket root
- receives url to user submitted resource + server metadata payload
- notifies server with metadata payload and exits if sha exists in root
- validates SHA
- copies to root
- optionally deletes from users/username/sha
- notifies server with metadata payload
- Receives metadata payload + SHA from worker
- Creates DB entry referencing SHA and any metadata (creator, etc...)
- Get namespaced credentials from server so they can upload directly to S3
- Compute SHA locally and upload to S3
- Ping worker queue when an upload is complete