Part of the value added in SaaS like Ghost(Pro) is that the infrastructure needed to deal with traffic spikes is built-in. There really ought to be a pricing model along the lines of "I really don't expect this site to get much traffic at all, so sell me a cheap plan for day-to-day expected usage, but just in case something I write happens to go viral, I pre-approve a charge of $100 (or whatever) to deal with the traffic spike, and in case there's new sustained traffic then I'll of course upgrade to a more expensive plan which covers a higher expected rate of day-to-day traffic."
Edit: let's put it another way: if you're publishing something to the Internet, it's because you want other people to read it. You therefore want other people to actually be able to read it in the rare but foreseeable circumstance that it becomes popular. If you didn't care about that, and you were really just writing for yourself, you'd just keep an offline journal.
Cloudflare in front with aggressive caching? What you're generating essentially is a static site, so it's safe to do that. If your S3 static site gets hugged to death, you won't go offline but you will pay an unexpectedly larger bill, so you should be setting up Cloudflare in front either way.