A bucket configured for website hosting, with the one twist an SPA needs: the error document is the same file as the index.
A static bucket can already serve files over HTTP — hosting a single-page app needs two more things on top of that: which file to serve first, and what to do when a request doesn't match a real object at all.