After almost 10 years of letting the blog sit, I wanted to bring it into the modern world. One of the issues was that I had last touched the blog back in 2011 when SSL connections were only for transactions. The blog was just fine serving pages at https:// but the rest of the world has moved onto https:// Notice the "s" for HyperText TransPort Secure.

I was able to do that with some work but the biggest problem was that most of my URLs end in / but some didn't. I was able to find a blog post on how to use Lamdas from AWS called from Cloudfront to handle adding a "/" to requests. But some-url/ and some-url and some-url/index.html were treated differently.

I was prepared to suffer through this but I was working with Netlify for another blog and that made me want to move this blog to Netlify, too. I liked having the blog sitting on S3, working fine as long as I paid for my domain and the AWS bill. But there's too much technical debt in having Cloudfront->Lambda->S3.

I found a great article on setting up a Pelican blog and using Netlify. The instructions almost worked perfectly.

What didn't work? By default, Netlify wanted to use Python2.7, not any variants of 3.X. I tried using RUNTIME.TXT but guessed wrong on version - I tried "3.8" and then "3" and those didn't work. Eventually I was able to determine that the latest version of Python was 3.7. I put that in as an environment variable and I was almost there.

Netlify wasn't happy about "importlib-metadata" not being pinned. I didn't have this in my pyproject.toml or requirements.txt so I'm not sure where it's coming from. But I was able to add

importlib-metadata ="^2.0.0"

to pyproject.toml and then run poetry export -f requirements.txt > requirements.txt After that, my build completed successfully.