I've also done it using apt-ftparchive using a simple script. Very bare bones, but easy enough.
Was looking at trying aptly next time I needed one. It looked interesting.
https://packages.debian.org/jessie/reprepro
https://packages.debian.org/jessie/apt-utils
https://packages.debian.org/jessie/aptly
[edit to include all links]
The syntax for sources.list is then "deb http://path/to/your/directory ./". Users can pick up your key by piping it into "sudo apt-key add -", or they can "sudo apt-key adv --keyserver... --recv-key..." with the usual GPG options (and check the fingerprint the same way).
The problem is that most serious users will quickly want tooling to do things like keep track of which versions of which packages are in the archive, not have two versions of the same package, support multiple distros/releases, support separate "test" and "production" areas, etc. And that's where the complexity shows up. (Also why you never see "./" sources.list lines in real life.)
But for "Hey, I built these three packages", it's kind of perfect.
But more impirtant than me actually doing that, is convincing all of you to update the wiki whenever you encounter errors or missing information! :-)
(No affilation with the Debian project other than being a long time user of Debian)
But I will try to make some changes to that page.
If anyone wants to collaborate on fixing that apt page then my email is in my profile. It should only take about an hour to clean up.
I started out with a reprepro archive, which is an abandoned project (or at least, had been for a couple of years early last year (edit: looks like I am in error, there are commits dating to last august... I must have been looking at the wrong repo)). The biggest problem with reprepro is that you can have only one package version per package - so no rollbacks.
But yeah, though you need software to calculate the index files, once they're done, an apt archive is just a static website, easily pushable to s3. Of course, if you want a private repo, it gets a bit more difficult...
One note: it's not quite true that you can't throw it on S3 -- they're just static files. This is how the mirroring infrastructure works, after all.
If you have questions about setting up an apt repo, feel free to reach out!
[1] http://mirrorer.alioth.debian.org/
[2] https://github.com/ocf/puppet/tree/master/modules/ocf_apt is an example
In any case, I find the process of actually creating the packages far more arduous than setting up the repo...