searching for http upload server on github i found
successfully tested on python3
unknown support for uploading large files
will listen on all interfaces by default, allows to set --bind <host> <port> on CLI
meets the "Stores files on Amazon S3" criterium
While a bit bloated if the only thing you want is uploads, I eventually used Nextcloud for this; You can do this in nextcloud by creating a folder and setting up a share link for that folder with the permissions set to "Upload only" or "Edit".
Zooming out a bit and not technically answering the question, sending files can also be ...
This suggestion does not address all requirements, but as it addresses most I'm posting it as an answer.
JabRef with a shared Postgres/Oracle/MySQL database and a network storage (both on a self-hosted VPS) is an option. I've listed how it address the requirements below:
Has a native Android client - unfortunately not.
Has free (gratis) options to extend ...