CloudF is infra as yaml and Terra is as code. CloudF also has the CDK which can use TypeScript and be infra as code that 'transpiles' down to yaml.
All options feel terrible. It's like learning a whole new programming language that takes 10 minutes to see if your code runs or which part got stuck.
But once you've got your stack working, changes are a breeze and can be done with way way more confidence. Spinning up clone environments is barely any work.
Is it terrible? Absolutely. Is it worth it? Again - absolutely.
If I had to do it again, I would pick the CDK (more powerful), but the fight would've taken longer.
I guess what I was hoping is that Beanstalk wasn’t designed with infra as code in mind, but things like Fargate were, and somehow it had become less horrible. Maybe that’s just never going to happen though and it’s the nature of the problem.
Appreciate the pointer toward CDK too, I have used it a tiny bit and it definitely seemed worth exploring further.
Because you've worked with Beanstalk in the past, I would personally stick with it unless I'm looking to fight 2 issues at the same time - Learning Fargate & Learning CDK/CloudF/Terraform.
Fargate is not a panacea - Elastic Beanstalk does have very cool options/features.